url-sanitizer 0.9.9 → 0.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ var Gr=Object.create;var qt=Object.defineProperty;var $r=Object.getOwnPropertyDe
2
2
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function oe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
3
3
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Z(r,i){var s=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!s){if(Array.isArray(r)||(s=g(r))||i&&r&&typeof r.length=="number"){s&&(r=s);var p=0,y=function(){};return{s:y,n:function(){return p>=r.length?{done:!0}:{done:!1,value:r[p++]}},e:function(k){throw k},f:y}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
4
4
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var w=!0,D=!1,S;return{s:function(){s=s.call(r)},n:function(){var k=s.next();return w=k.done,k},e:function(k){D=!0,S=k},f:function(){try{!w&&s.return!=null&&s.return()}finally{if(D)throw S}}}}var X=Object.entries,se=Object.setPrototypeOf,le=Object.isFrozen,j=Object.getPrototypeOf,Q=Object.getOwnPropertyDescriptor,E=Object.freeze,N=Object.seal,Ee=Object.create,te=typeof Reflect<"u"&&Reflect,J=te.apply,ce=te.construct;J||(J=function(i,s,p){return i.apply(s,p)}),E||(E=function(i){return i}),N||(N=function(i){return i}),ce||(ce=function(i,s){return u(i,f(s))});var P=H(Array.prototype.forEach),_e=H(Array.prototype.pop),ee=H(Array.prototype.push),pe=H(String.prototype.toLowerCase),Re=H(String.prototype.toString),Fe=H(String.prototype.match),$=H(String.prototype.replace),rr=H(String.prototype.indexOf),ar=H(String.prototype.trim),F=H(RegExp.prototype.test),ze=nr(TypeError);function H(r){return function(i){for(var s=arguments.length,p=new Array(s>1?s-1:0),y=1;y<s;y++)p[y-1]=arguments[y];return J(r,i,p)}}function nr(r){return function(){for(var i=arguments.length,s=new Array(i),p=0;p<i;p++)s[p]=arguments[p];return ce(r,s)}}function m(r,i,s){s=s||pe,se&&se(r,null);for(var p=i.length;p--;){var y=i[p];if(typeof y=="string"){var w=s(y);w!==y&&(le(i)||(i[p]=w),y=w)}r[y]=!0}return r}function fe(r){var i=Ee(null),s=Z(X(r)),p;try{for(s.s();!(p=s.n()).done;){var y=d(p.value,2),w=y[0],D=y[1];i[w]=D}}catch(S){s.e(S)}finally{s.f()}return i}function we(r,i){for(;r!==null;){var s=Q(r,i);if(s){if(s.get)return H(s.get);if(typeof s.value=="function")return H(s.value)}r=j(r)}function p(y){return console.warn("fallback value for",y),null}return p}var _t=E(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),He=E(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ge=E(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),ir=E(["animate","color-profile","cursor","discard","fedropshadow","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),$e=E(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),or=E(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),gt=E(["#text"]),Tt=E(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Be=E(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),bt=E(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Se=E(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),sr=N(/\{\{[\w\W]*|[\w\W]*\}\}/gm),lr=N(/<%[\w\W]*|[\w\W]*%>/gm),cr=N(/\${[\w\W]*}/gm),pr=N(/^data-[\-\w.\u00B7-\uFFFF]/),fr=N(/^aria-[\-\w]+$/),ur=N(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),mr=N(/^(?:\w+script|data):/i),dr=N(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),hr=N(/^html$/i),vr=function(){return typeof window>"u"?null:window},yr=function(i,s){if(n(i)!=="object"||typeof i.createPolicy!="function")return null;var p=null,y="data-tt-policy-suffix";s.currentScript&&s.currentScript.hasAttribute(y)&&(p=s.currentScript.getAttribute(y));var w="dompurify"+(p?"#"+p:"");try{return i.createPolicy(w,{createHTML:function(S){return S},createScriptURL:function(S){return S}})}catch{return console.warn("TrustedTypes policy "+w+" could not be created."),null}};function At(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:vr(),i=function(e){return At(e)};if(i.version="3.0.1",i.removed=[],!r||!r.document||r.document.nodeType!==9)return i.isSupported=!1,i;var s=r.document,p=r.document,y=r.DocumentFragment,w=r.HTMLTemplateElement,D=r.Node,S=r.Element,k=r.NodeFilter,ge=r.NamedNodeMap,_r=ge===void 0?r.NamedNodeMap||r.MozNamedAttrMap:ge,gr=r.HTMLFormElement,Tr=r.DOMParser,Le=r.trustedTypes,xe=S.prototype,br=we(xe,"cloneNode"),Ar=we(xe,"nextSibling"),Rr=we(xe,"childNodes"),je=we(xe,"parentNode");if(typeof w=="function"){var We=p.createElement("template");We.content&&We.content.ownerDocument&&(p=We.content.ownerDocument)}var B=yr(Le,s),Rt=B?B.createHTML(""):"",Oe=p,Ye=Oe.implementation,wr=Oe.createNodeIterator,Sr=Oe.createDocumentFragment,Lr=Oe.getElementsByTagName,xr=s.importNode,W={};i.isSupported=typeof X=="function"&&typeof je=="function"&&Ye&&typeof Ye.createHTMLDocument<"u";var qe=sr,Xe=lr,Ve=cr,Or=pr,Nr=fr,Dr=mr,wt=dr,Ke=ur,L=null,St=m({},[].concat(f(_t),f(He),f(Ge),f($e),f(gt))),x=null,Lt=m({},[].concat(f(Tt),f(Be),f(bt),f(Se))),A=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Te=null,Ze=null,xt=!0,Qe=!0,Ot=!1,Nt=!0,ue=!1,re=!1,Je=!1,et=!1,me=!1,Ne=!1,De=!1,Dt=!0,Ct=!1,Cr="user-content-",tt=!0,be=!1,de={},he=null,Mt=m({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),It=null,Ut=m({},["audio","video","img","source","image","track"]),rt=null,kt=m({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ce="http://www.w3.org/1998/Math/MathML",Me="http://www.w3.org/2000/svg",V="http://www.w3.org/1999/xhtml",ve=V,at=!1,nt=null,Mr=m({},[Ce,Me,V],Re),ae,Ir=["application/xhtml+xml","text/html"],Ur="text/html",O,ye=null,kr=p.createElement("form"),Pt=function(e){return e instanceof RegExp||e instanceof Function},it=function(e){ye&&ye===e||((!e||n(e)!=="object")&&(e={}),e=fe(e),ae=Ir.indexOf(e.PARSER_MEDIA_TYPE)===-1?ae=Ur:ae=e.PARSER_MEDIA_TYPE,O=ae==="application/xhtml+xml"?Re:pe,L="ALLOWED_TAGS"in e?m({},e.ALLOWED_TAGS,O):St,x="ALLOWED_ATTR"in e?m({},e.ALLOWED_ATTR,O):Lt,nt="ALLOWED_NAMESPACES"in e?m({},e.ALLOWED_NAMESPACES,Re):Mr,rt="ADD_URI_SAFE_ATTR"in e?m(fe(kt),e.ADD_URI_SAFE_ATTR,O):kt,It="ADD_DATA_URI_TAGS"in e?m(fe(Ut),e.ADD_DATA_URI_TAGS,O):Ut,he="FORBID_CONTENTS"in e?m({},e.FORBID_CONTENTS,O):Mt,Te="FORBID_TAGS"in e?m({},e.FORBID_TAGS,O):{},Ze="FORBID_ATTR"in e?m({},e.FORBID_ATTR,O):{},de="USE_PROFILES"in e?e.USE_PROFILES:!1,xt=e.ALLOW_ARIA_ATTR!==!1,Qe=e.ALLOW_DATA_ATTR!==!1,Ot=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Nt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ue=e.SAFE_FOR_TEMPLATES||!1,re=e.WHOLE_DOCUMENT||!1,me=e.RETURN_DOM||!1,Ne=e.RETURN_DOM_FRAGMENT||!1,De=e.RETURN_TRUSTED_TYPE||!1,et=e.FORCE_BODY||!1,Dt=e.SANITIZE_DOM!==!1,Ct=e.SANITIZE_NAMED_PROPS||!1,tt=e.KEEP_CONTENT!==!1,be=e.IN_PLACE||!1,Ke=e.ALLOWED_URI_REGEXP||Ke,ve=e.NAMESPACE||V,A=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Pt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(A.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Pt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(A.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(A.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ue&&(Qe=!1),Ne&&(me=!0),de&&(L=m({},f(gt)),x=[],de.html===!0&&(m(L,_t),m(x,Tt)),de.svg===!0&&(m(L,He),m(x,Be),m(x,Se)),de.svgFilters===!0&&(m(L,Ge),m(x,Be),m(x,Se)),de.mathMl===!0&&(m(L,$e),m(x,bt),m(x,Se))),e.ADD_TAGS&&(L===St&&(L=fe(L)),m(L,e.ADD_TAGS,O)),e.ADD_ATTR&&(x===Lt&&(x=fe(x)),m(x,e.ADD_ATTR,O)),e.ADD_URI_SAFE_ATTR&&m(rt,e.ADD_URI_SAFE_ATTR,O),e.FORBID_CONTENTS&&(he===Mt&&(he=fe(he)),m(he,e.FORBID_CONTENTS,O)),tt&&(L["#text"]=!0),re&&m(L,["html","head","body"]),L.table&&(m(L,["tbody"]),delete Te.tbody),E&&E(e),ye=e)},Ft=m({},["mi","mo","mn","ms","mtext"]),zt=m({},["foreignobject","desc","title","annotation-xml"]),Pr=m({},["title","style","font","a","script"]),Ie=m({},He);m(Ie,Ge),m(Ie,ir);var ot=m({},$e);m(ot,or);var Fr=function(e){var t=je(e);(!t||!t.tagName)&&(t={namespaceURI:ve,tagName:"template"});var o=pe(e.tagName),_=pe(t.tagName);return nt[e.namespaceURI]?e.namespaceURI===Me?t.namespaceURI===V?o==="svg":t.namespaceURI===Ce?o==="svg"&&(_==="annotation-xml"||Ft[_]):Boolean(Ie[o]):e.namespaceURI===Ce?t.namespaceURI===V?o==="math":t.namespaceURI===Me?o==="math"&&zt[_]:Boolean(ot[o]):e.namespaceURI===V?t.namespaceURI===Me&&!zt[_]||t.namespaceURI===Ce&&!Ft[_]?!1:!ot[o]&&(Pr[o]||!Ie[o]):!!(ae==="application/xhtml+xml"&&nt[e.namespaceURI]):!1},ne=function(e){ee(i.removed,{element:e});try{e.parentNode.removeChild(e)}catch{e.remove()}},st=function(e,t){try{ee(i.removed,{attribute:t.getAttributeNode(e),from:t})}catch{ee(i.removed,{attribute:null,from:t})}if(t.removeAttribute(e),e==="is"&&!x[e])if(me||Ne)try{ne(t)}catch{}else try{t.setAttribute(e,"")}catch{}},Ht=function(e){var t,o;if(et)e="<remove></remove>"+e;else{var _=Fe(e,/^[\r\n\t ]+/);o=_&&_[0]}ae==="application/xhtml+xml"&&ve===V&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");var C=B?B.createHTML(e):e;if(ve===V)try{t=new Tr().parseFromString(C,ae)}catch{}if(!t||!t.documentElement){t=Ye.createDocument(ve,"template",null);try{t.documentElement.innerHTML=at?Rt:C}catch{}}var G=t.body||t.documentElement;return e&&o&&G.insertBefore(p.createTextNode(o),G.childNodes[0]||null),ve===V?Lr.call(t,re?"html":"body")[0]:re?t.documentElement:G},Gt=function(e){return wr.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,null,!1)},zr=function(e){return e instanceof gr&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof _r)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},Ue=function(e){return n(D)==="object"?e instanceof D:e&&n(e)==="object"&&typeof e.nodeType=="number"&&typeof e.nodeName=="string"},K=function(e,t,o){W[e]&&P(W[e],function(_){_.call(i,t,o,ye)})},$t=function(e){var t;if(K("beforeSanitizeElements",e,null),zr(e))return ne(e),!0;var o=O(e.nodeName);if(K("uponSanitizeElement",e,{tagName:o,allowedTags:L}),e.hasChildNodes()&&!Ue(e.firstElementChild)&&(!Ue(e.content)||!Ue(e.content.firstElementChild))&&F(/<[/\w]/g,e.innerHTML)&&F(/<[/\w]/g,e.textContent))return ne(e),!0;if(!L[o]||Te[o]){if(!Te[o]&&jt(o)&&(A.tagNameCheck instanceof RegExp&&F(A.tagNameCheck,o)||A.tagNameCheck instanceof Function&&A.tagNameCheck(o)))return!1;if(tt&&!he[o]){var _=je(e)||e.parentNode,C=Rr(e)||e.childNodes;if(C&&_)for(var G=C.length,M=G-1;M>=0;--M)_.insertBefore(br(C[M],!0),Ar(e))}return ne(e),!0}return e instanceof S&&!Fr(e)||(o==="noscript"||o==="noembed")&&F(/<\/no(script|embed)/i,e.innerHTML)?(ne(e),!0):(ue&&e.nodeType===3&&(t=e.textContent,t=$(t,qe," "),t=$(t,Xe," "),t=$(t,Ve," "),e.textContent!==t&&(ee(i.removed,{element:e.cloneNode()}),e.textContent=t)),K("afterSanitizeElements",e,null),!1)},Bt=function(e,t,o){if(Dt&&(t==="id"||t==="name")&&(o in p||o in kr))return!1;if(!(Qe&&!Ze[t]&&F(Or,t))){if(!(xt&&F(Nr,t))){if(!x[t]||Ze[t]){if(!(jt(e)&&(A.tagNameCheck instanceof RegExp&&F(A.tagNameCheck,e)||A.tagNameCheck instanceof Function&&A.tagNameCheck(e))&&(A.attributeNameCheck instanceof RegExp&&F(A.attributeNameCheck,t)||A.attributeNameCheck instanceof Function&&A.attributeNameCheck(t))||t==="is"&&A.allowCustomizedBuiltInElements&&(A.tagNameCheck instanceof RegExp&&F(A.tagNameCheck,o)||A.tagNameCheck instanceof Function&&A.tagNameCheck(o))))return!1}else if(!rt[t]){if(!F(Ke,$(o,wt,""))){if(!((t==="src"||t==="xlink:href"||t==="href")&&e!=="script"&&rr(o,"data:")===0&&It[e])){if(!(Ot&&!F(Dr,$(o,wt,"")))){if(o)return!1}}}}}}return!0},jt=function(e){return e.indexOf("-")>0},Wt=function(e){var t,o,_,C;K("beforeSanitizeAttributes",e,null);var G=e.attributes;if(G){var M={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:x};for(C=G.length;C--;){t=G[C];var z=t,ie=z.name,lt=z.namespaceURI;if(o=ie==="value"?t.value:ar(t.value),_=O(ie),M.attrName=_,M.attrValue=o,M.keepAttr=!0,M.forceKeepAttr=void 0,K("uponSanitizeAttribute",e,M),o=M.attrValue,!M.forceKeepAttr&&(st(ie,e),!!M.keepAttr)){if(!Nt&&F(/\/>/i,o)){st(ie,e);continue}ue&&(o=$(o,qe," "),o=$(o,Xe," "),o=$(o,Ve," "));var Yt=O(e.nodeName);if(Bt(Yt,_,o)){if(Ct&&(_==="id"||_==="name")&&(st(ie,e),o=Cr+o),B&&n(Le)==="object"&&typeof Le.getAttributeType=="function"&&!lt)switch(Le.getAttributeType(Yt,_)){case"TrustedHTML":o=B.createHTML(o);break;case"TrustedScriptURL":o=B.createScriptURL(o);break}try{lt?e.setAttributeNS(lt,ie,o):e.setAttribute(ie,o),_e(i.removed)}catch{}}}}K("afterSanitizeAttributes",e,null)}},Hr=function c(e){var t,o=Gt(e);for(K("beforeSanitizeShadowDOM",e,null);t=o.nextNode();)K("uponSanitizeShadowNode",t,null),!$t(t)&&(t.content instanceof y&&c(t.content),Wt(t));K("afterSanitizeShadowDOM",e,null)};return i.sanitize=function(c){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t,o,_,C;if(at=!c,at&&(c="<!-->"),typeof c!="string"&&!Ue(c)){if(typeof c.toString!="function")throw ze("toString is not a function");if(c=c.toString(),typeof c!="string")throw ze("dirty is not a string, aborting")}if(!i.isSupported)return c;if(Je||it(e),i.removed=[],typeof c=="string"&&(be=!1),be){if(c.nodeName){var G=O(c.nodeName);if(!L[G]||Te[G])throw ze("root node is forbidden and cannot be sanitized in-place")}}else if(c instanceof D)t=Ht("<!---->"),o=t.ownerDocument.importNode(c,!0),o.nodeType===1&&o.nodeName==="BODY"||o.nodeName==="HTML"?t=o:t.appendChild(o);else{if(!me&&!ue&&!re&&c.indexOf("<")===-1)return B&&De?B.createHTML(c):c;if(t=Ht(c),!t)return me?null:De?Rt:""}t&&et&&ne(t.firstChild);for(var M=Gt(be?c:t);_=M.nextNode();)$t(_)||(_.content instanceof y&&Hr(_.content),Wt(_));if(be)return c;if(me){if(Ne)for(C=Sr.call(t.ownerDocument);t.firstChild;)C.appendChild(t.firstChild);else C=t;return(x.shadowroot||x.shadowrootmod)&&(C=xr.call(s,C,!0)),C}var z=re?t.outerHTML:t.innerHTML;return re&&L["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&F(hr,t.ownerDocument.doctype.name)&&(z="<!DOCTYPE "+t.ownerDocument.doctype.name+`>
5
- `+z),ue&&(z=$(z,qe," "),z=$(z,Xe," "),z=$(z,Ve," ")),B&&De?B.createHTML(z):z},i.setConfig=function(c){it(c),Je=!0},i.clearConfig=function(){ye=null,Je=!1},i.isValidAttribute=function(c,e,t){ye||it({});var o=O(c),_=O(e);return Bt(o,_,t)},i.addHook=function(c,e){typeof e=="function"&&(W[c]=W[c]||[],ee(W[c],e))},i.removeHook=function(c){if(W[c])return _e(W[c])},i.removeHooks=function(c){W[c]&&(W[c]=[])},i.removeAllHooks=function(){W={}},i}var Er=At();return Er})});var ft=Xr(Xt(),1);var Y=n=>Object.prototype.toString.call(n).slice(8,-1),I=n=>typeof n=="string"||n instanceof String;var ut=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var Vt=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","browserext","cabal","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","diaspora","dict","did","dis","dlna-playcontainer","dlna-playsingle","dns","dntp","doi","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","http","https","hxxp","hxxps","hydrazone","hyper","iax","icap","icon","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lorawan","lpa","lvlt","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-powerpoint","ms-project","ms-publisher","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mumble","mupdate","mvn","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openpgp4fpr","otpauth","palm","paparazzi","payment","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcon","xcon-userid","xfire","xmlrpc.beep","xmlrpc.beeps","xmpp","xri","ymsgr","z39.50r","z39.50s"];var{FileReader:Kt}=window;var Ae=16,Zr=/^[\w+/\-=]+$/,Qr=/:$/,Jr=/^\d+/,ea=/#x?$/,ta=/^#(?:x(?:00)?[2-7]|\d)/,ra=/^x[\dA-F]+/i,aa=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,na=/^[a-z][\da-z+\-.]*$/,ia=/^(?:ext|web)\+[a-z]+$/,Zt=/(?:java|vb)script/,oa=/^%[\dA-F]{2}$/i,Pe=n=>{if(!I(n))throw new TypeError(`Expected String but got ${Y(n)}.`);let a=[];for(let l of n)a.push(`%${l.charCodeAt(0).toString(Ae).toUpperCase()}`);return a.join("")},mt=n=>{I(n)&&oa.test(n)&&(n=n.toUpperCase());let[a,l,u,d,f,T]=["&","#","<",">",'"',"'"].map(Pe),h;return n===a?h=`${a}amp;`:n===u?h=`${a}lt;`:n===d?h=`${a}gt;`:n===f?h=`${a}quot;`:n===T?h=`${a}${l}39;`:h=n,h},Qt=n=>{if(I(n)){if(!Zr.test(n))throw new Error(`Invalid base64 data: ${n}`)}else throw new TypeError(`Expected String but got ${Y(n)}.`);let a=atob(n),l=Uint8Array.from([...a].map(f=>f.charCodeAt(0))),u=new Set(ut),d;return l.every(f=>u.has(f))?d=a.replace(/\s/g,Pe):d=n,d},dt=(n,a=0)=>{if(!I(n))throw new TypeError(`Expected String but got ${Y(n)}.`);if(Number.isInteger(a)){if(a>Ae)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${Y(a)}.`);let l=decodeURIComponent(n);if(/&#/.test(l)){let u=new Set(ut),d=[...l.matchAll(aa)].reverse();for(let f of d){let[T,h]=f,b;if(ra.test(h)?b=parseInt(`0${h}`,Ae):Jr.test(h)&&(b=parseInt(h)),Number.isInteger(b)){let{index:U}=f,[g,v]=[l.substring(0,U),l.substring(U+T.length)];u.has(b)?(l=`${g}${String.fromCharCode(b)}${v}`,(ea.test(g)||ta.test(v))&&(l=dt(l,++a))):b<Ae*Ae&&(l=`${g}${v}`)}}}return l},Jt=n=>new Promise((a,l)=>{let u=new Kt;u.addEventListener("error",()=>l(u.error)),u.addEventListener("abort",()=>a(u.result)),u.addEventListener("load",()=>a(u.result)),u.readAsDataURL(n)}),ke=class{#e;constructor(){this.#e=new Set(Vt)}get(){return[...this.#e]}has(a){return this.#e.has(a)}add(a){if(I(a)){if(Zt.test(a)||!na.test(a))throw new Error(`Invalid scheme: ${a}`)}else throw new TypeError(`Expected String but got ${Y(a)}.`);return this.#e.add(a),[...this.#e]}remove(a){return this.#e.delete(a)}verify(a){let l;if(I(a))try{let{protocol:u}=new URL(a),d=u.replace(Qr,""),f=d.split("+");l=!Zt.test(d)&&ia.test(d)||f.every(T=>this.#e.has(T))}catch{l=!1}return!!l}};var sa=16,ht=/data:[\w#&+\-./;=]*,/,er=/data:[\w#&+\-./;=]*base64,[\w+/\-=]+/i,la=/data:[\w#&+\-./;=]*,[^"]+/g,vt=/:$/,ca=/(?:#|%23)$/,pa=/(?<!(?:#|%23).*)(?:\?|%3F)$/,fa=/[<>"'\s]/g,ua=/%(?:2(?:2|7)|3(?:C|E))/g,tr=/%(?:2(?:2|7)|3(?:C|E))|["']/,ma=/^(?:text\/(?:ht|x)ml|application\/(?:[\w#&\-.;]+\+)?xml|image\/svg\+xml)/,yt=/(?:java|vb)script|blob/,da=/%26/g,Et=class extends ke{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(a){if(!I(a))throw new TypeError(`Expected String but got ${Y(a)}.`);let l=a;if(ht.test(l)){let d=[...l.matchAll(la)].reverse();for(let f of d){let[T]=f;er.test(T)&&([T]=er.exec(T)),this.#e++,this.#t.add(T);let h=this.sanitize(T,{allow:["data"]}),{index:b}=f,[U,g]=[l.substring(0,b),l.substring(b+T.length)];h?l=`${U}${h}${g}`:l=`${U}${g}`}}return l}purify(a){if(!I(a))throw new TypeError(`Expected String but got ${Y(a)}.`);let l=ft.default.sanitize(decodeURIComponent(a));return l&&ht.test(l)&&(l=this.replace(l)),l=l.replace(ca,"").replace(pa,""),encodeURI(l)}sanitize(a,l){if(this.#e>sa)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:u,deny:d,only:f,remove:T}=l??{},h=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),b=!1;if(Array.isArray(f)&&f.length){let g=super.get();for(let R of g)h.set(R,!1);let v=Object.values(f);for(let R of v)if(I(R)&&(R=R.trim(),!yt.test(R))){if(super.has(R))h.set(R,!0);else{try{super.add(R)}catch{}super.has(R)&&h.set(R,!0)}!b&&h.has(R)&&(b=h.get(R))}}else{if(Array.isArray(u)&&u.length){let g=Object.values(u);for(let v of g)if(I(v)&&(v=v.trim(),!yt.test(v)))if(super.has(v))h.set(v,!0);else{try{super.add(v)}catch{}super.has(v)&&h.set(v,!0)}}if(Array.isArray(d)&&d.length){let g=Object.values(d);for(let v of g)I(v)&&(v=v.trim(),v&&h.set(v,!1))}}let U;if(super.verify(a)){let{hash:g,href:v,pathname:R,protocol:oe,search:Z}=new URL(a),X=oe.replace(vt,""),se=X.split("+"),le;if(b)le=se.every(j=>h.get(j));else for(let[j,Q]of h.entries())if(le=Q||X!==j&&se.every(E=>E!==j),!le)break;if(le){let j=se.includes("data"),Q,E=v;if(j){let[N,...Ee]=R.split(","),te=`${Ee.join(",")}${Z}${g}`,J=N.split(";"),ce=J[J.length-1]==="base64",P=te;ce&&(P=Qt(te));try{let ee=dt(P).trim(),{protocol:pe}=new URL(ee);pe.replace(vt,"").split("+").some(Fe=>yt.test(Fe))&&(E="")}catch{}let _e=ht.test(P);P!==te||_e?_e?P=this.replace(P):this.#t.has(a)?this.#t.delete(a):Q=!0:this.#t.has(a)?this.#t.delete(a):Q=!0,(!N||ma.test(N))&&(P=this.purify(P)),E&&P?(ce&&P!==te&&J.pop(),E=`${X}:${J.join(";")},${P}`):E=""}else Q=!0;if(!j&&T&&tr.test(E)){let N=tr.exec(E),{index:Ee}=N;E=E.substring(0,Ee)}E?(U=E.replace(fa,Pe).replace(da,mt),Q&&(j||(U=U.replace(ua,mt)),this.#e=0)):this.#e=0}}return U||null}parse(a,l){if(!I(a))throw new TypeError(`Expected String but got ${Y(a)}.`);let u=new Map([["input",a]]),d;if(this.verify(a)){let{protocol:f}=new URL(a);f==="blob:"?d=a:d=this.sanitize(a,l??{allow:["data","file"]})}if(d){let f=new URL(d),{pathname:T,protocol:h}=f,U=h.replace(vt,"").split("+").includes("data");if(u.set("valid",!0),U){let g=new Map,[v,...R]=T.split(","),oe=`${R.join(",")}`,Z=v.split(";"),X=Z[Z.length-1]==="base64";X&&Z.pop(),g.set("mime",Z.join(";")),g.set("base64",X),g.set("data",oe),u.set("data",Object.fromEntries(g))}else u.set("data",null);for(let g in f){let v=f[g];I(v)&&u.set(g,v)}}else u.set("valid",!1);return Object.fromEntries(u)}},q=new Et,ha=async(n,a={allow:[],deny:[],only:[]})=>{let l;if(q.verify(n)){let{protocol:u}=new URL(n);if(u==="blob:"){let{allow:d,deny:f,only:T}=a;if(Array.isArray(d)&&d.includes("blob")&&!(Array.isArray(f)&&f.includes("blob"))||Array.isArray(T)&&T.includes("blob")){let h;try{h=await fetch(n).then(b=>b.blob()).then(Jt)}catch{}if(h){if(Array.isArray(T))T.includes("data")||T.push("data");else if(Array.isArray(d)&&(d.includes("data")||d.push("data"),Array.isArray(f)&&f.includes("data"))){let b=f.indexOf("data");f.splice(b,1)}l=q.sanitize(h,a)}}URL.revokeObjectURL(n)}else l=q.sanitize(n,a)}return l||null},va=(n,a)=>{let l;if(q.verify(n)){let{protocol:u}=new URL(n);u==="blob:"?URL.revokeObjectURL(n):l=q.sanitize(n,a)}return l||null},ya=async n=>q.parse(n),Ea=n=>q.parse(n),_a=async n=>q.verify(n),ga=n=>q.verify(n);export{q as default,_a as isURI,ga as isURISync,ya as parseURL,Ea as parseURLSync,ha as sanitizeURL,va as sanitizeURLSync};
5
+ `+z),ue&&(z=$(z,qe," "),z=$(z,Xe," "),z=$(z,Ve," ")),B&&De?B.createHTML(z):z},i.setConfig=function(c){it(c),Je=!0},i.clearConfig=function(){ye=null,Je=!1},i.isValidAttribute=function(c,e,t){ye||it({});var o=O(c),_=O(e);return Bt(o,_,t)},i.addHook=function(c,e){typeof e=="function"&&(W[c]=W[c]||[],ee(W[c],e))},i.removeHook=function(c){if(W[c])return _e(W[c])},i.removeHooks=function(c){W[c]&&(W[c]=[])},i.removeAllHooks=function(){W={}},i}var Er=At();return Er})});var ft=Xr(Xt(),1);var Y=n=>Object.prototype.toString.call(n).slice(8,-1),I=n=>typeof n=="string"||n instanceof String;var ut=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var Vt=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","browserext","cabal","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","diaspora","dict","did","dis","dlna-playcontainer","dlna-playsingle","dns","dntp","doi","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","http","https","hxxp","hxxps","hydrazone","hyper","iax","icap","icon","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lorawan","lpa","lvlt","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-powerpoint","ms-project","ms-publisher","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mumble","mupdate","mvn","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openpgp4fpr","otpauth","palm","paparazzi","payment","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcon","xcon-userid","xfire","xmlrpc.beep","xmlrpc.beeps","xmpp","xri","ymsgr","z39.50r","z39.50s"];var{FileReader:Kt}=globalThis;var Ae=16,Zr=/^[\w+/\-=]+$/,Qr=/:$/,Jr=/^\d+/,ea=/#x?$/,ta=/^#(?:x(?:00)?[2-7]|\d)/,ra=/^x[\dA-F]+/i,aa=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,na=/^[a-z][\da-z+\-.]*$/,ia=/^(?:ext|web)\+[a-z]+$/,Zt=/(?:java|vb)script/,oa=/^%[\dA-F]{2}$/i,Pe=n=>{if(!I(n))throw new TypeError(`Expected String but got ${Y(n)}.`);let a=[];for(let l of n)a.push(`%${l.charCodeAt(0).toString(Ae).toUpperCase()}`);return a.join("")},mt=n=>{I(n)&&oa.test(n)&&(n=n.toUpperCase());let[a,l,u,d,f,T]=["&","#","<",">",'"',"'"].map(Pe),h;return n===a?h=`${a}amp;`:n===u?h=`${a}lt;`:n===d?h=`${a}gt;`:n===f?h=`${a}quot;`:n===T?h=`${a}${l}39;`:h=n,h},Qt=n=>{if(I(n)){if(!Zr.test(n))throw new Error(`Invalid base64 data: ${n}`)}else throw new TypeError(`Expected String but got ${Y(n)}.`);let a=atob(n),l=Uint8Array.from([...a].map(f=>f.charCodeAt(0))),u=new Set(ut),d;return l.every(f=>u.has(f))?d=a.replace(/\s/g,Pe):d=n,d},dt=(n,a=0)=>{if(!I(n))throw new TypeError(`Expected String but got ${Y(n)}.`);if(Number.isInteger(a)){if(a>Ae)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${Y(a)}.`);let l=decodeURIComponent(n);if(/&#/.test(l)){let u=new Set(ut),d=[...l.matchAll(aa)].reverse();for(let f of d){let[T,h]=f,b;if(ra.test(h)?b=parseInt(`0${h}`,Ae):Jr.test(h)&&(b=parseInt(h)),Number.isInteger(b)){let{index:U}=f,[g,v]=[l.substring(0,U),l.substring(U+T.length)];u.has(b)?(l=`${g}${String.fromCharCode(b)}${v}`,(ea.test(g)||ta.test(v))&&(l=dt(l,++a))):b<Ae*Ae&&(l=`${g}${v}`)}}}return l},Jt=n=>new Promise((a,l)=>{let u=new Kt;u.addEventListener("error",()=>l(u.error)),u.addEventListener("abort",()=>a(u.result)),u.addEventListener("load",()=>a(u.result)),u.readAsDataURL(n)}),ke=class{#e;constructor(){this.#e=new Set(Vt)}get(){return[...this.#e]}has(a){return this.#e.has(a)}add(a){if(I(a)){if(Zt.test(a)||!na.test(a))throw new Error(`Invalid scheme: ${a}`)}else throw new TypeError(`Expected String but got ${Y(a)}.`);return this.#e.add(a),[...this.#e]}remove(a){return this.#e.delete(a)}verify(a){let l;if(I(a))try{let{protocol:u}=new URL(a),d=u.replace(Qr,""),f=d.split("+");l=!Zt.test(d)&&ia.test(d)||f.every(T=>this.#e.has(T))}catch{l=!1}return!!l}};var sa=16,ht=/data:[\w#&+\-./;=]*,/,er=/data:[\w#&+\-./;=]*base64,[\w+/\-=]+/i,la=/data:[\w#&+\-./;=]*,[^"]+/g,vt=/:$/,ca=/(?:#|%23)$/,pa=/(?<!(?:#|%23).*)(?:\?|%3F)$/,fa=/[<>"'\s]/g,ua=/%(?:2(?:2|7)|3(?:C|E))/g,ma=/^(?:text\/(?:ht|x)ml|application\/(?:[\w#&\-.;]+\+)?xml|image\/svg\+xml)/,yt=/(?:java|vb)script|blob/,tr=/%(?:2(?:2|7)|3(?:C|E))|[<>"']/,da=/%26/g,Et=class extends ke{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(a){if(!I(a))throw new TypeError(`Expected String but got ${Y(a)}.`);let l=a;if(ht.test(l)){let d=[...l.matchAll(la)].reverse();for(let f of d){let[T]=f;er.test(T)&&([T]=er.exec(T)),this.#e++,this.#t.add(T);let h=this.sanitize(T,{allow:["data"]}),{index:b}=f,[U,g]=[l.substring(0,b),l.substring(b+T.length)];h?l=`${U}${h}${g}`:l=`${U}${g}`}}return l}purify(a){if(!I(a))throw new TypeError(`Expected String but got ${Y(a)}.`);let l=ft.default.sanitize(decodeURIComponent(a));return l&&ht.test(l)&&(l=this.replace(l)),l=l.replace(ca,"").replace(pa,""),encodeURI(l)}sanitize(a,l){if(this.#e>sa)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:u,deny:d,only:f,remove:T}=l??{},h=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),b=!1;if(Array.isArray(f)&&f.length){let g=super.get();for(let R of g)h.set(R,!1);let v=Object.values(f);for(let R of v)if(I(R)&&(R=R.trim(),!yt.test(R))){if(super.has(R))h.set(R,!0);else{try{super.add(R)}catch{}super.has(R)&&h.set(R,!0)}!b&&h.has(R)&&(b=h.get(R))}}else{if(Array.isArray(u)&&u.length){let g=Object.values(u);for(let v of g)if(I(v)&&(v=v.trim(),!yt.test(v)))if(super.has(v))h.set(v,!0);else{try{super.add(v)}catch{}super.has(v)&&h.set(v,!0)}}if(Array.isArray(d)&&d.length){let g=Object.values(d);for(let v of g)I(v)&&(v=v.trim(),v&&h.set(v,!1))}}let U;if(super.verify(a)){let{hash:g,href:v,pathname:R,protocol:oe,search:Z}=new URL(a),X=oe.replace(vt,""),se=X.split("+"),le;if(b)le=se.every(j=>h.get(j));else for(let[j,Q]of h.entries())if(le=Q||X!==j&&se.every(E=>E!==j),!le)break;if(le){let j=se.includes("data"),Q,E=v;if(j){let[N,...Ee]=R.split(","),te=`${Ee.join(",")}${Z}${g}`,J=N.split(";"),ce=J[J.length-1]==="base64",P=te;ce&&(P=Qt(te));try{let ee=dt(P).trim(),{protocol:pe}=new URL(ee);pe.replace(vt,"").split("+").some(Fe=>yt.test(Fe))&&(E="")}catch{}let _e=ht.test(P);P!==te||_e?_e?P=this.replace(P):this.#t.has(a)?this.#t.delete(a):Q=!0:this.#t.has(a)?this.#t.delete(a):Q=!0,(!N||ma.test(N))&&(P=this.purify(P)),E&&P?(ce&&P!==te&&J.pop(),E=`${X}:${J.join(";")},${P}`):E=""}else Q=!0;if(!j&&T&&tr.test(E)){let N=tr.exec(E),{index:Ee}=N;E=E.substring(0,Ee)}E?(U=E.replace(fa,Pe).replace(da,mt),Q&&(j||(U=U.replace(ua,mt)),this.#e=0)):this.#e=0}}return U||null}parse(a,l){if(!I(a))throw new TypeError(`Expected String but got ${Y(a)}.`);let u=new Map([["input",a]]),d;if(this.verify(a)){let{protocol:f}=new URL(a);f==="blob:"?d=a:d=this.sanitize(a,l??{allow:["data","file"]})}if(d){let f=new URL(d),{pathname:T,protocol:h}=f,U=h.replace(vt,"").split("+").includes("data");if(u.set("valid",!0),U){let g=new Map,[v,...R]=T.split(","),oe=`${R.join(",")}`,Z=v.split(";"),X=Z[Z.length-1]==="base64";X&&Z.pop(),g.set("mime",Z.join(";")),g.set("base64",X),g.set("data",oe),u.set("data",Object.fromEntries(g))}else u.set("data",null);for(let g in f){let v=f[g];I(v)&&u.set(g,v)}}else u.set("valid",!1);return Object.fromEntries(u)}},q=new Et,ha=async(n,a={allow:[],deny:[],only:[]})=>{let l;if(q.verify(n)){let{protocol:u}=new URL(n);if(u==="blob:"){let{allow:d,deny:f,only:T}=a;if(Array.isArray(d)&&d.includes("blob")&&!(Array.isArray(f)&&f.includes("blob"))||Array.isArray(T)&&T.includes("blob")){let h;try{h=await fetch(n).then(b=>b.blob()).then(Jt)}catch{}if(h){if(Array.isArray(T))T.includes("data")||T.push("data");else if(Array.isArray(d)&&(d.includes("data")||d.push("data"),Array.isArray(f)&&f.includes("data"))){let b=f.indexOf("data");f.splice(b,1)}l=q.sanitize(h,a)}}URL.revokeObjectURL(n)}else l=q.sanitize(n,a)}return l||null},va=(n,a)=>{let l;if(q.verify(n)){let{protocol:u}=new URL(n);u==="blob:"?URL.revokeObjectURL(n):l=q.sanitize(n,a)}return l||null},ya=async n=>q.parse(n),Ea=n=>q.parse(n),_a=async n=>q.verify(n),ga=n=>q.verify(n);export{q as default,_a as isURI,ga as isURISync,ya as parseURL,Ea as parseURLSync,ha as sanitizeURL,va as sanitizeURLSync};
6
6
  /*!
7
7
  * URL Sanitizer
8
8
  *