url-sanitizer 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -9
- package/dist/url-sanitizer.js +42 -41
- package/dist/url-sanitizer.js.map +2 -2
- package/dist/url-sanitizer.min.js +3 -3
- package/dist/url-sanitizer.min.js.map +3 -3
- package/package.json +7 -5
- package/src/mjs/uri-util.js +58 -59
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var Nr=Object.create;var
|
|
2
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var f=Object.hasOwnProperty,g=Object.setPrototypeOf,ae=Object.isFrozen,G=Object.getPrototypeOf,Y=Object.getOwnPropertyDescriptor,E=Object.freeze,v=Object.seal,R=Object.create,H=typeof Reflect<"u"&&Reflect,z=H.apply,te=H.construct;z||(z=function(s,l,u){return s.apply(l,u)}),E||(E=function(s){return s}),v||(v=function(s){return s}),te||(te=function(s,l){return h(s,c(l))});var re=P(Array.prototype.forEach),V=P(Array.prototype.pop),M=P(Array.prototype.push),X=P(String.prototype.toLowerCase),ne=P(String.prototype.toString),he=P(String.prototype.match),U=P(String.prototype.replace),B=P(String.prototype.indexOf),be=P(String.prototype.trim),x=P(RegExp.prototype.test),ve=Xt(TypeError);function P(n){return function(s){for(var l=arguments.length,u=new Array(l>1?l-1:0),T=1;T<l;T++)u[T-1]=arguments[T];return z(n,s,u)}}function Xt(n){return function(){for(var s=arguments.length,l=new Array(s),u=0;u<s;u++)l[u]=arguments[u];return te(n,l)}}function p(n,s,l){l=l||X,g&&g(n,null);for(var u=s.length;u--;){var T=s[u];if(typeof T=="string"){var j=l(T);j!==T&&(ae(s)||(s[u]=j),T=j)}n[T]=!0}return n}function ie(n){var s=R(null),l;for(l in n)z(f,n,[l])===!0&&(s[l]=n[l]);return s}function we(n,s){for(;n!==null;){var l=Y(n,s);if(l){if(l.get)return P(l.get);if(typeof l.value=="function")return P(l.value)}n=G(n)}function u(T){return console.warn("fallback value for",T),null}return u}var ft=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"]),ke=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"]),Pe=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"]),Kt=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"]),Fe=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"]),Zt=E(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),dt=E(["#text"]),ht=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"]),He=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"]),vt=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"]),Jt=v(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Qt=v(/<%[\w\W]*|[\w\W]*%>/gm),er=v(/\${[\w\W]*}/gm),tr=v(/^data-[\-\w.\u00B7-\uFFFF]/),rr=v(/^aria-[\-\w]+$/),ar=v(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),nr=v(/^(?:\w+script|data):/i),ir=v(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),sr=v(/^html$/i),or=function(){return typeof window>"u"?null:window},lr=function(s,l){if(r(s)!=="object"||typeof s.createPolicy!="function")return null;var u=null,T="data-tt-policy-suffix";l.currentScript&&l.currentScript.hasAttribute(T)&&(u=l.currentScript.getAttribute(T));var j="dompurify"+(u?"#"+u:"");try{return s.createPolicy(j,{createHTML:function(W){return W},createScriptURL:function(W){return W}})}catch{return console.warn("TrustedTypes policy "+j+" could not be created."),null}};function gt(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:or(),s=function(e){return gt(e)};if(s.version="2.4.3",s.removed=[],!n||!n.document||n.document.nodeType!==9)return s.isSupported=!1,s;var l=n.document,u=n.document,T=n.DocumentFragment,j=n.HTMLTemplateElement,K=n.Node,W=n.Element,ge=n.NodeFilter,Ee=n.NamedNodeMap,pr=Ee===void 0?n.NamedNodeMap||n.MozNamedAttrMap:Ee,mr=n.HTMLFormElement,ur=n.DOMParser,Re=n.trustedTypes,xe=W.prototype,fr=we(xe,"cloneNode"),dr=we(xe,"nextSibling"),hr=we(xe,"childNodes"),ze=we(xe,"parentNode");if(typeof j=="function"){var $e=u.createElement("template");$e.content&&$e.content.ownerDocument&&(u=$e.content.ownerDocument)}var $=lr(Re,l),Ge=$?$.createHTML(""):"",Le=u,Be=Le.implementation,vr=Le.createNodeIterator,gr=Le.createDocumentFragment,Er=Le.getElementsByTagName,yr=l.importNode,Et={};try{Et=ie(u).documentMode?u.documentMode:{}}catch{}var q={};s.isSupported=typeof ze=="function"&&Be&&typeof Be.createHTMLDocument<"u"&&Et!==9;var je=Jt,We=Qt,qe=er,Tr=tr,_r=rr,Ar=nr,yt=ir,Ye=ar,L=null,Tt=p({},[].concat(c(ft),c(ke),c(Pe),c(Fe),c(dt))),N=null,_t=p({},[].concat(c(ht),c(He),c(vt),c(Se))),w=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}})),ye=null,Ve=null,At=!0,Xe=!0,bt=!1,le=!1,se=!1,Ke=!1,Ze=!1,ce=!1,Oe=!1,De=!1,wt=!0,St=!1,br="user-content-",Je=!0,Te=!1,pe={},me=null,Rt=p({},["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"]),xt=null,Lt=p({},["audio","video","img","source","image","track"]),Qe=null,Ot=p({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Me="http://www.w3.org/1998/Math/MathML",Ne="http://www.w3.org/2000/svg",Z="http://www.w3.org/1999/xhtml",ue=Z,et=!1,tt=null,wr=p({},[Me,Ne,Z],ne),oe,Sr=["application/xhtml+xml","text/html"],Rr="text/html",O,fe=null,xr=u.createElement("form"),Dt=function(e){return e instanceof RegExp||e instanceof Function},rt=function(e){fe&&fe===e||((!e||r(e)!=="object")&&(e={}),e=ie(e),oe=Sr.indexOf(e.PARSER_MEDIA_TYPE)===-1?oe=Rr:oe=e.PARSER_MEDIA_TYPE,O=oe==="application/xhtml+xml"?ne:X,L="ALLOWED_TAGS"in e?p({},e.ALLOWED_TAGS,O):Tt,N="ALLOWED_ATTR"in e?p({},e.ALLOWED_ATTR,O):_t,tt="ALLOWED_NAMESPACES"in e?p({},e.ALLOWED_NAMESPACES,ne):wr,Qe="ADD_URI_SAFE_ATTR"in e?p(ie(Ot),e.ADD_URI_SAFE_ATTR,O):Ot,xt="ADD_DATA_URI_TAGS"in e?p(ie(Lt),e.ADD_DATA_URI_TAGS,O):Lt,me="FORBID_CONTENTS"in e?p({},e.FORBID_CONTENTS,O):Rt,ye="FORBID_TAGS"in e?p({},e.FORBID_TAGS,O):{},Ve="FORBID_ATTR"in e?p({},e.FORBID_ATTR,O):{},pe="USE_PROFILES"in e?e.USE_PROFILES:!1,At=e.ALLOW_ARIA_ATTR!==!1,Xe=e.ALLOW_DATA_ATTR!==!1,bt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,le=e.SAFE_FOR_TEMPLATES||!1,se=e.WHOLE_DOCUMENT||!1,ce=e.RETURN_DOM||!1,Oe=e.RETURN_DOM_FRAGMENT||!1,De=e.RETURN_TRUSTED_TYPE||!1,Ze=e.FORCE_BODY||!1,wt=e.SANITIZE_DOM!==!1,St=e.SANITIZE_NAMED_PROPS||!1,Je=e.KEEP_CONTENT!==!1,Te=e.IN_PLACE||!1,Ye=e.ALLOWED_URI_REGEXP||Ye,ue=e.NAMESPACE||Z,e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(w.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(w.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(w.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),le&&(Xe=!1),Oe&&(ce=!0),pe&&(L=p({},c(dt)),N=[],pe.html===!0&&(p(L,ft),p(N,ht)),pe.svg===!0&&(p(L,ke),p(N,He),p(N,Se)),pe.svgFilters===!0&&(p(L,Pe),p(N,He),p(N,Se)),pe.mathMl===!0&&(p(L,Fe),p(N,vt),p(N,Se))),e.ADD_TAGS&&(L===Tt&&(L=ie(L)),p(L,e.ADD_TAGS,O)),e.ADD_ATTR&&(N===_t&&(N=ie(N)),p(N,e.ADD_ATTR,O)),e.ADD_URI_SAFE_ATTR&&p(Qe,e.ADD_URI_SAFE_ATTR,O),e.FORBID_CONTENTS&&(me===Rt&&(me=ie(me)),p(me,e.FORBID_CONTENTS,O)),Je&&(L["#text"]=!0),se&&p(L,["html","head","body"]),L.table&&(p(L,["tbody"]),delete ye.tbody),E&&E(e),fe=e)},Mt=p({},["mi","mo","mn","ms","mtext"]),Nt=p({},["foreignobject","desc","title","annotation-xml"]),Lr=p({},["title","style","font","a","script"]),Ce=p({},ke);p(Ce,Pe),p(Ce,Kt);var at=p({},Fe);p(at,Zt);var Or=function(e){var t=ze(e);(!t||!t.tagName)&&(t={namespaceURI:ue,tagName:"template"});var i=X(e.tagName),d=X(t.tagName);return tt[e.namespaceURI]?e.namespaceURI===Ne?t.namespaceURI===Z?i==="svg":t.namespaceURI===Me?i==="svg"&&(d==="annotation-xml"||Mt[d]):Boolean(Ce[i]):e.namespaceURI===Me?t.namespaceURI===Z?i==="math":t.namespaceURI===Ne?i==="math"&&Nt[d]:Boolean(at[i]):e.namespaceURI===Z?t.namespaceURI===Ne&&!Nt[d]||t.namespaceURI===Me&&!Mt[d]?!1:!at[i]&&(Lr[i]||!Ce[i]):!!(oe==="application/xhtml+xml"&&tt[e.namespaceURI]):!1},J=function(e){M(s.removed,{element:e});try{e.parentNode.removeChild(e)}catch{try{e.outerHTML=Ge}catch{e.remove()}}},nt=function(e,t){try{M(s.removed,{attribute:t.getAttributeNode(e),from:t})}catch{M(s.removed,{attribute:null,from:t})}if(t.removeAttribute(e),e==="is"&&!N[e])if(ce||Oe)try{J(t)}catch{}else try{t.setAttribute(e,"")}catch{}},Ct=function(e){var t,i;if(Ze)e="<remove></remove>"+e;else{var d=he(e,/^[\r\n\t ]+/);i=d&&d[0]}oe==="application/xhtml+xml"&&ue===Z&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");var F=$?$.createHTML(e):e;if(ue===Z)try{t=new ur().parseFromString(F,oe)}catch{}if(!t||!t.documentElement){t=Be.createDocument(ue,"template",null);try{t.documentElement.innerHTML=et?Ge:F}catch{}}var I=t.body||t.documentElement;return e&&i&&I.insertBefore(u.createTextNode(i),I.childNodes[0]||null),ue===Z?Er.call(t,se?"html":"body")[0]:se?t.documentElement:I},It=function(e){return vr.call(e.ownerDocument||e,e,ge.SHOW_ELEMENT|ge.SHOW_COMMENT|ge.SHOW_TEXT,null,!1)},Dr=function(e){return e instanceof mr&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof pr)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},_e=function(e){return r(K)==="object"?e instanceof K:e&&r(e)==="object"&&typeof e.nodeType=="number"&&typeof e.nodeName=="string"},Q=function(e,t,i){q[e]&&re(q[e],function(d){d.call(s,t,i,fe)})},Ut=function(e){var t;if(Q("beforeSanitizeElements",e,null),Dr(e)||x(/[\u0080-\uFFFF]/,e.nodeName))return J(e),!0;var i=O(e.nodeName);if(Q("uponSanitizeElement",e,{tagName:i,allowedTags:L}),e.hasChildNodes()&&!_e(e.firstElementChild)&&(!_e(e.content)||!_e(e.content.firstElementChild))&&x(/<[/\w]/g,e.innerHTML)&&x(/<[/\w]/g,e.textContent)||i==="select"&&x(/<template/i,e.innerHTML))return J(e),!0;if(!L[i]||ye[i]){if(!ye[i]&&Pt(i)&&(w.tagNameCheck instanceof RegExp&&x(w.tagNameCheck,i)||w.tagNameCheck instanceof Function&&w.tagNameCheck(i)))return!1;if(Je&&!me[i]){var d=ze(e)||e.parentNode,F=hr(e)||e.childNodes;if(F&&d)for(var I=F.length,C=I-1;C>=0;--C)d.insertBefore(fr(F[C],!0),dr(e))}return J(e),!0}return e instanceof W&&!Or(e)||(i==="noscript"||i==="noembed")&&x(/<\/no(script|embed)/i,e.innerHTML)?(J(e),!0):(le&&e.nodeType===3&&(t=e.textContent,t=U(t,je," "),t=U(t,We," "),t=U(t,qe," "),e.textContent!==t&&(M(s.removed,{element:e.cloneNode()}),e.textContent=t)),Q("afterSanitizeElements",e,null),!1)},kt=function(e,t,i){if(wt&&(t==="id"||t==="name")&&(i in u||i in xr))return!1;if(!(Xe&&!Ve[t]&&x(Tr,t))){if(!(At&&x(_r,t))){if(!N[t]||Ve[t]){if(!(Pt(e)&&(w.tagNameCheck instanceof RegExp&&x(w.tagNameCheck,e)||w.tagNameCheck instanceof Function&&w.tagNameCheck(e))&&(w.attributeNameCheck instanceof RegExp&&x(w.attributeNameCheck,t)||w.attributeNameCheck instanceof Function&&w.attributeNameCheck(t))||t==="is"&&w.allowCustomizedBuiltInElements&&(w.tagNameCheck instanceof RegExp&&x(w.tagNameCheck,i)||w.tagNameCheck instanceof Function&&w.tagNameCheck(i))))return!1}else if(!Qe[t]){if(!x(Ye,U(i,yt,""))){if(!((t==="src"||t==="xlink:href"||t==="href")&&e!=="script"&&B(i,"data:")===0&&xt[e])){if(!(bt&&!x(Ar,U(i,yt,"")))){if(i)return!1}}}}}}return!0},Pt=function(e){return e.indexOf("-")>0},Ft=function(e){var t,i,d,F;Q("beforeSanitizeAttributes",e,null);var I=e.attributes;if(I){var C={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:N};for(F=I.length;F--;){t=I[F];var Ie=t,D=Ie.name,it=Ie.namespaceURI;if(i=D==="value"?t.value:be(t.value),d=O(D),C.attrName=d,C.attrValue=i,C.keepAttr=!0,C.forceKeepAttr=void 0,Q("uponSanitizeAttribute",e,C),i=C.attrValue,!C.forceKeepAttr&&(nt(D,e),!!C.keepAttr)){if(x(/\/>/i,i)){nt(D,e);continue}le&&(i=U(i,je," "),i=U(i,We," "),i=U(i,qe," "));var Ht=O(e.nodeName);if(kt(Ht,d,i)){if(St&&(d==="id"||d==="name")&&(nt(D,e),i=br+i),$&&r(Re)==="object"&&typeof Re.getAttributeType=="function"&&!it)switch(Re.getAttributeType(Ht,d)){case"TrustedHTML":i=$.createHTML(i);break;case"TrustedScriptURL":i=$.createScriptURL(i);break}try{it?e.setAttributeNS(it,D,i):e.setAttribute(D,i),V(s.removed)}catch{}}}}Q("afterSanitizeAttributes",e,null)}},Mr=function o(e){var t,i=It(e);for(Q("beforeSanitizeShadowDOM",e,null);t=i.nextNode();)Q("uponSanitizeShadowNode",t,null),!Ut(t)&&(t.content instanceof T&&o(t.content),Ft(t));Q("afterSanitizeShadowDOM",e,null)};return s.sanitize=function(o){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t,i,d,F,I;if(et=!o,et&&(o="<!-->"),typeof o!="string"&&!_e(o)){if(typeof o.toString!="function")throw ve("toString is not a function");if(o=o.toString(),typeof o!="string")throw ve("dirty is not a string, aborting")}if(!s.isSupported){if(r(n.toStaticHTML)==="object"||typeof n.toStaticHTML=="function"){if(typeof o=="string")return n.toStaticHTML(o);if(_e(o))return n.toStaticHTML(o.outerHTML)}return o}if(Ke||rt(e),s.removed=[],typeof o=="string"&&(Te=!1),Te){if(o.nodeName){var C=O(o.nodeName);if(!L[C]||ye[C])throw ve("root node is forbidden and cannot be sanitized in-place")}}else if(o instanceof K)t=Ct("<!---->"),i=t.ownerDocument.importNode(o,!0),i.nodeType===1&&i.nodeName==="BODY"||i.nodeName==="HTML"?t=i:t.appendChild(i);else{if(!ce&&!le&&!se&&o.indexOf("<")===-1)return $&&De?$.createHTML(o):o;if(t=Ct(o),!t)return ce?null:De?Ge:""}t&&Ze&&J(t.firstChild);for(var Ie=It(Te?o:t);d=Ie.nextNode();)d.nodeType===3&&d===F||Ut(d)||(d.content instanceof T&&Mr(d.content),Ft(d),F=d);if(F=null,Te)return o;if(ce){if(Oe)for(I=gr.call(t.ownerDocument);t.firstChild;)I.appendChild(t.firstChild);else I=t;return N.shadowroot&&(I=yr.call(l,I,!0)),I}var D=se?t.outerHTML:t.innerHTML;return se&&L["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&x(sr,t.ownerDocument.doctype.name)&&(D="<!DOCTYPE "+t.ownerDocument.doctype.name+`>
|
|
3
|
-
`+D),le&&(D=U(D,je," "),D=U(D,We," "),D=U(D,qe," ")),$&&De?$.createHTML(D):D},s.setConfig=function(o){rt(o),Ke=!0},s.clearConfig=function(){fe=null,Ke=!1},s.isValidAttribute=function(o,e,t){fe||rt({});var i=O(o),d=O(e);return kt(i,d,t)},s.addHook=function(o,e){typeof e=="function"&&(q[o]=q[o]||[],M(q[o],e))},s.removeHook=function(o){if(q[o])return V(q[o])},s.removeHooks=function(o){q[o]&&(q[o]=[])},s.removeAllHooks=function(){q={}},s}var cr=gt();return cr})});var ee=r=>Object.prototype.toString.call(r).slice(8,-1),k=r=>typeof r=="string"||r instanceof String;var lt=Hr($t(),1);var ct=[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 Gt=["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 de=16,Gr=/^[\da-z+/\-_=]+$/i,Br=/data:[^,]*,[^"]+/g,Bt=/data:[^,]*;?base64,[\da-z+/\-_=]+/i,jr=/^(?:text\/(?:ht|x)ml|application\/(?:xhtml\+)?xml|image\/svg\+xml)/,Wr=/[<>"'\s]/g,qr=/%(?:2(?:2|7)|3(?:C|E))/g,Yr=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/ig,Vr=/^[a-z][\da-z+\-.]*$/,Xr=/^(?:ext|web)\+[a-z]+$/,Ae=/(?:java|vb)script/,Kr=/^%[\dA-F]{2}$/i,Zr=/%26/g,Jr=/%26(?:(?:l|g|quo)t|%2339);?/g,ut=r=>{if(!k(r))throw new TypeError(`Expected String but got ${ee(r)}.`);let a=[];for(let m of r)a.push(`%${m.charCodeAt(0).toString(de).toUpperCase()}`);return a.join("")},jt=r=>{if(k(r))if(Kr.test(r))r=r.toUpperCase();else throw new Error(`Invalid URL encoded character: ${r}`);else throw new TypeError(`Expected String but got ${ee(r)}.`);let[a,m,h,c,y,b]=["&","#","<",">",'"',"'"].map(ut),_;return r===a?_=`${a}amp;`:r===h?_=`${a}lt;`:r===c?_=`${a}gt;`:r===y?_=`${a}quot;`:r===b?_=`${a}${m}39;`:_=r,_},Qr=r=>{let a;return/%26lt;?/.test(r)?a="<":/%26gt;?/.test(r)?a=">":/%26quot;?/.test(r)?a='"':/%26%2339;?/.test(r)?a="'":a=r,a},ea=r=>{if(k(r)){if(!Gr.test(r))throw new Error(`Invalid base64 data: ${r}`)}else throw new TypeError(`Expected String but got ${ee(r)}.`);let a=atob(r),m=Uint8Array.from([...a].map(y=>y.charCodeAt(0))),h=new Set(ct),c;return m.every(y=>h.has(y))?c=a.replace(/\s/g,ut):c=r,c},Wt=(r,a=0)=>{if(!k(r))throw new TypeError(`Expected String but got ${ee(r)}.`);if(Number.isInteger(a)){if(a>de)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${ee(a)}.`);let m=decodeURIComponent(r);if(/&#/.test(m)){let h=new Set(ct),c=[...m.matchAll(Yr)].reverse();for(let y of c){let[b,_]=y,S;if(/^x[\dA-F]+/i.test(_)?S=parseInt(`0${_}`,de):/^[\d]+/.test(_)&&(S=parseInt(_)),Number.isInteger(S)){let{index:A}=y,[f,g]=[m.substring(0,A),m.substring(A+b.length)];h.has(S)?(m=`${f}${String.fromCharCode(S)}${g}`,(/#x?$/.test(f)||/^#(?:x(?:00)?[2-7]|\d)/.test(g))&&(m=Wt(m,++a))):S<de*de&&(m=`${f}${g}`)}}}return m},ta=r=>{if(!k(r))throw new TypeError(`Expected String but got ${ee(r)}.`);return encodeURIComponent(lt.default.sanitize(decodeURIComponent(r)))},pt=class{#e;constructor(){this.#e=new Set(Gt)}get(){return[...this.#e]}has(a){return this.#e.has(a)}add(a){if(k(a)){if(Ae.test(a)||!Vr.test(a))throw new Error(`Invalid scheme: ${a}`)}else throw new TypeError(`Expected String but got ${ee(a)}.`);return this.#e.add(a),[...this.#e]}remove(a){return this.#e.delete(a)}isURI(a){let m;if(k(a))try{let{protocol:h}=new URL(a),c=h.replace(/:$/,""),y=c.split("+");m=!Ae.test(c)&&Xr.test(c)||y.every(b=>this.#e.has(b))}catch{m=!1}return!!m}},mt=class extends pt{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}sanitize(a,m={allow:[],deny:[],only:[]}){if(this.#e>de)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:h,deny:c,only:y}=m??{},b=new Map([["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),_=!1;if(Array.isArray(y)&&y.length){let A=super.get();for(let g of A)b.set(g,!1);let f=Object.values(y);for(let g of f)if(k(g)&&(g=g.trim(),!Ae.test(g))){if(super.has(g))b.set(g,!0);else{try{super.add(g)}catch{}super.has(g)&&b.set(g,!0)}!_&&b.has(g)&&(_=b.get(g))}}else{if(Array.isArray(h)&&h.length){let A=Object.values(h);for(let f of A)if(k(f)&&(f=f.trim(),!Ae.test(f)))if(super.has(f))b.set(f,!0);else{try{super.add(f)}catch{}super.has(f)&&b.set(f,!0)}}if(Array.isArray(c)&&c.length){let A=Object.values(c);for(let f of A)k(f)&&(f=f.trim(),f&&b.set(f,!1))}}let S;if(super.isURI(a)){let{hash:A,href:f,pathname:g,protocol:ae,search:G}=new URL(a),Y=ae.replace(/:$/,""),E=Y.split("+"),v;if(_)v=E.every(R=>b.get(R));else for(let[R,H]of b.entries())if(v=H||Y!==R&&E.every(z=>z!==R),!v)break;if(v){let R,H=f;if(E.includes("data")){let[z,...te]=g.split(","),re=`${te.join(",")}${G}${A}`,V=z.split(";"),M=re;if(V[V.length-1]==="base64")V.pop(),M=ea(re);else try{let ne=Wt(M),{protocol:he}=new URL(ne.trim());he.replace(/:$/,"").split("+").some(B=>Ae.test(B))&&(H="")}catch{}let X=/data:[^,]*,/.test(M);if(M!==re||X){if(X){let he=[...M.matchAll(Br)].reverse();for(let U of he){let[B]=U;Bt.test(B)&&([B]=Bt.exec(B)),this.#e++,this.#t.add(B);let be=this.sanitize(B,{allow:["data"]});if(be){let{index:x}=U,[ve,P]=[M.substring(0,x),M.substring(x+B.length)];M=`${ve}${be}${P}`}}this.#t.has(a)?this.#t.delete(a):R=!0}else this.#t.has(a)?this.#t.delete(a):R=!0;H=`${Y}:${V.join(";")},${M}`}else this.#t.has(a)?this.#t.delete(a):R=!0}else R=!0;H?(S=H.replace(Wr,ut).replace(Zr,jt),R&&(S=S.replace(qr,jt),this.#e=0)):(S=H,this.#e=0)}}return S||null}parse(a,m){if(!k(a))throw new TypeError(`Expected String but got ${ee(a)}.`);let h=this.sanitize(a,m??{allow:["data","file"]}),c=new Map([["input",a]]);if(h){let y=new URL(h),{pathname:b,protocol:_}=y,S=_.replace(/:$/,"").split("+");if(c.set("valid",!0),S.includes("data")){let A=new Map,[f,...g]=b.split(","),ae=`${g.join(",")}`,G=f.split(";"),Y=G[G.length-1]==="base64";Y&&G.pop(),A.set("mime",G.join(";")),A.set("base64",Y);let E;if(!Y&&jr.test(f)){let v=ae,H=[...v.matchAll(Jr)].reverse();for(let z of H){let[te]=z,{index:re}=z,[V,M]=[v.substring(0,re),v.substring(re+te.length)],X=Qr(te);v=`${V}${X}${M}`}E=ta(v),A.set("data",E)}else A.set("data",ae);c.set("data",Object.fromEntries(A));for(let v in y){let R=y[v];if(k(R)){if(k(E))switch(v){case"href":R=`${_}${G.join(";")},${E}`;break;case"pathname":R=`${G.join(";")},${E}`;break;default:}c.set(v,R)}}}else{c.set("data",null);for(let A in y){let f=y[A];k(f)&&c.set(A,f)}}}else c.set("valid",!1);return Object.fromEntries(c)}},Ue=new mt,qt=r=>Ue.isURI(r),ra=async r=>await qt(r),Yt=(r,a)=>{let m=Ue.parse(r,a??{allow:[],deny:[],only:[]}),h;if(m){let{href:c}=m;h=c}return h??null},aa=async(r,a)=>await Yt(r,a),Vt=r=>Ue.parse(r),na=async r=>await Vt(r);export{Ue as default,ra as isURI,qt as isURISync,na as parseURL,Vt as parseURLSync,aa as sanitizeURL,Yt as sanitizeURLSync};
|
|
1
|
+
var Nr=Object.create;var $t=Object.defineProperty;var Ir=Object.getOwnPropertyDescriptor;var kr=Object.getOwnPropertyNames;var Ur=Object.getPrototypeOf,Pr=Object.prototype.hasOwnProperty;var Fr=(r,a)=>()=>(a||r((a={exports:{}}).exports,a),a.exports);var Hr=(r,a,m,v)=>{if(a&&typeof a=="object"||typeof a=="function")for(let c of kr(a))!Pr.call(r,c)&&c!==m&&$t(r,c,{get:()=>a[c],enumerable:!(v=Ir(a,c))||v.enumerable});return r};var zr=(r,a,m)=>(m=r!=null?Nr(Ur(r)):{},Hr(a||!r||!r.__esModule?$t(m,"default",{value:r,enumerable:!0}):m,r));var Gt=Fr((ot,lt)=>{(function(r,a){typeof ot=="object"&&typeof lt<"u"?lt.exports=a():typeof define=="function"&&define.amd?define(a):(r=typeof globalThis<"u"?globalThis:r||self,r.DOMPurify=a())})(ot,function(){"use strict";function r(n){return r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},r(n)}function a(n,s){return a=Object.setPrototypeOf||function(f,E){return f.__proto__=E,f},a(n,s)}function m(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function v(n,s,l){return m()?v=Reflect.construct:v=function(E,Y,K){var V=[null];V.push.apply(V,Y);var ye=Function.bind.apply(E,V),Te=new ye;return K&&a(Te,K.prototype),Te},v.apply(null,arguments)}function c(n){return T(n)||B(n)||d(n)||b()}function T(n){if(Array.isArray(n))return C(n)}function B(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function d(n,s){if(n){if(typeof n=="string")return C(n,s);var l=Object.prototype.toString.call(n).slice(8,-1);if(l==="Object"&&n.constructor&&(l=n.constructor.name),l==="Map"||l==="Set")return Array.from(n);if(l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))return C(n,s)}}function C(n,s){(s==null||s>n.length)&&(s=n.length);for(var l=0,f=new Array(s);l<s;l++)f[l]=n[l];return f}function b(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var w=Object.hasOwnProperty,h=Object.setPrototypeOf,_=Object.isFrozen,j=Object.getPrototypeOf,ae=Object.getOwnPropertyDescriptor,y=Object.freeze,g=Object.seal,z=Object.create,k=typeof Reflect<"u"&&Reflect,S=k.apply,$=k.construct;S||(S=function(s,l,f){return s.apply(l,f)}),y||(y=function(s){return s}),g||(g=function(s){return s}),$||($=function(s,l){return v(s,c(l))});var ee=F(Array.prototype.forEach),te=F(Array.prototype.pop),G=F(Array.prototype.push),N=F(String.prototype.toLowerCase),oe=F(String.prototype.toString),ve=F(String.prototype.match),U=F(String.prototype.replace),ge=F(String.prototype.indexOf),q=F(String.prototype.trim),R=F(RegExp.prototype.test),le=Ue(TypeError);function F(n){return function(s){for(var l=arguments.length,f=new Array(l>1?l-1:0),E=1;E<l;E++)f[E-1]=arguments[E];return S(n,s,f)}}function Ue(n){return function(){for(var s=arguments.length,l=new Array(s),f=0;f<s;f++)l[f]=arguments[f];return $(n,l)}}function p(n,s,l){l=l||N,h&&h(n,null);for(var f=s.length;f--;){var E=s[f];if(typeof E=="string"){var Y=l(E);Y!==E&&(_(s)||(s[f]=Y),E=Y)}n[E]=!0}return n}function ne(n){var s=z(null),l;for(l in n)S(w,n,[l])===!0&&(s[l]=n[l]);return s}function we(n,s){for(;n!==null;){var l=ae(n,s);if(l){if(l.get)return F(l.get);if(typeof l.value=="function")return F(l.value)}n=j(n)}function f(E){return console.warn("fallback value for",E),null}return f}var dt=y(["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"]),Pe=y(["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"]),Fe=y(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Zt=y(["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"]),He=y(["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"]),Jt=y(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ht=y(["#text"]),vt=y(["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"]),ze=y(["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"]),gt=y(["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=y(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Qt=g(/\{\{[\w\W]*|[\w\W]*\}\}/gm),er=g(/<%[\w\W]*|[\w\W]*%>/gm),tr=g(/\${[\w\W]*}/gm),rr=g(/^data-[\-\w.\u00B7-\uFFFF]/),ar=g(/^aria-[\-\w]+$/),nr=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ir=g(/^(?:\w+script|data):/i),sr=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),or=g(/^html$/i),lr=function(){return typeof window>"u"?null:window},cr=function(s,l){if(r(s)!=="object"||typeof s.createPolicy!="function")return null;var f=null,E="data-tt-policy-suffix";l.currentScript&&l.currentScript.hasAttribute(E)&&(f=l.currentScript.getAttribute(E));var Y="dompurify"+(f?"#"+f:"");try{return s.createPolicy(Y,{createHTML:function(V){return V},createScriptURL:function(V){return V}})}catch{return console.warn("TrustedTypes policy "+Y+" could not be created."),null}};function yt(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:lr(),s=function(e){return yt(e)};if(s.version="2.4.3",s.removed=[],!n||!n.document||n.document.nodeType!==9)return s.isSupported=!1,s;var l=n.document,f=n.document,E=n.DocumentFragment,Y=n.HTMLTemplateElement,K=n.Node,V=n.Element,ye=n.NodeFilter,Te=n.NamedNodeMap,mr=Te===void 0?n.NamedNodeMap||n.MozNamedAttrMap:Te,fr=n.HTMLFormElement,ur=n.DOMParser,Re=n.trustedTypes,xe=V.prototype,dr=we(xe,"cloneNode"),hr=we(xe,"nextSibling"),vr=we(xe,"childNodes"),$e=we(xe,"parentNode");if(typeof Y=="function"){var Ge=f.createElement("template");Ge.content&&Ge.content.ownerDocument&&(f=Ge.content.ownerDocument)}var W=cr(Re,l),Be=W?W.createHTML(""):"",Le=f,je=Le.implementation,gr=Le.createNodeIterator,yr=Le.createDocumentFragment,Tr=Le.getElementsByTagName,Er=l.importNode,Tt={};try{Tt=ne(f).documentMode?f.documentMode:{}}catch{}var X={};s.isSupported=typeof $e=="function"&&je&&typeof je.createHTMLDocument<"u"&&Tt!==9;var We=Qt,qe=er,Ye=tr,_r=rr,Ar=ar,br=ir,Et=sr,Ve=nr,x=null,_t=p({},[].concat(c(dt),c(Pe),c(Fe),c(He),c(ht))),M=null,At=p({},[].concat(c(vt),c(ze),c(gt),c(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}})),Ee=null,Xe=null,bt=!0,Ke=!0,wt=!1,ce=!1,ie=!1,Ze=!1,Je=!1,pe=!1,Oe=!1,Me=!1,St=!0,Rt=!1,wr="user-content-",Qe=!0,_e=!1,me={},fe=null,xt=p({},["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"]),Lt=null,Ot=p({},["audio","video","img","source","image","track"]),et=null,Mt=p({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),De="http://www.w3.org/1998/Math/MathML",Ce="http://www.w3.org/2000/svg",Z="http://www.w3.org/1999/xhtml",ue=Z,tt=!1,rt=null,Sr=p({},[De,Ce,Z],oe),se,Rr=["application/xhtml+xml","text/html"],xr="text/html",L,de=null,Lr=f.createElement("form"),Dt=function(e){return e instanceof RegExp||e instanceof Function},at=function(e){de&&de===e||((!e||r(e)!=="object")&&(e={}),e=ne(e),se=Rr.indexOf(e.PARSER_MEDIA_TYPE)===-1?se=xr:se=e.PARSER_MEDIA_TYPE,L=se==="application/xhtml+xml"?oe:N,x="ALLOWED_TAGS"in e?p({},e.ALLOWED_TAGS,L):_t,M="ALLOWED_ATTR"in e?p({},e.ALLOWED_ATTR,L):At,rt="ALLOWED_NAMESPACES"in e?p({},e.ALLOWED_NAMESPACES,oe):Sr,et="ADD_URI_SAFE_ATTR"in e?p(ne(Mt),e.ADD_URI_SAFE_ATTR,L):Mt,Lt="ADD_DATA_URI_TAGS"in e?p(ne(Ot),e.ADD_DATA_URI_TAGS,L):Ot,fe="FORBID_CONTENTS"in e?p({},e.FORBID_CONTENTS,L):xt,Ee="FORBID_TAGS"in e?p({},e.FORBID_TAGS,L):{},Xe="FORBID_ATTR"in e?p({},e.FORBID_ATTR,L):{},me="USE_PROFILES"in e?e.USE_PROFILES:!1,bt=e.ALLOW_ARIA_ATTR!==!1,Ke=e.ALLOW_DATA_ATTR!==!1,wt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ce=e.SAFE_FOR_TEMPLATES||!1,ie=e.WHOLE_DOCUMENT||!1,pe=e.RETURN_DOM||!1,Oe=e.RETURN_DOM_FRAGMENT||!1,Me=e.RETURN_TRUSTED_TYPE||!1,Je=e.FORCE_BODY||!1,St=e.SANITIZE_DOM!==!1,Rt=e.SANITIZE_NAMED_PROPS||!1,Qe=e.KEEP_CONTENT!==!1,_e=e.IN_PLACE||!1,Ve=e.ALLOWED_URI_REGEXP||Ve,ue=e.NAMESPACE||Z,e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(A.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Dt(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),ce&&(Ke=!1),Oe&&(pe=!0),me&&(x=p({},c(ht)),M=[],me.html===!0&&(p(x,dt),p(M,vt)),me.svg===!0&&(p(x,Pe),p(M,ze),p(M,Se)),me.svgFilters===!0&&(p(x,Fe),p(M,ze),p(M,Se)),me.mathMl===!0&&(p(x,He),p(M,gt),p(M,Se))),e.ADD_TAGS&&(x===_t&&(x=ne(x)),p(x,e.ADD_TAGS,L)),e.ADD_ATTR&&(M===At&&(M=ne(M)),p(M,e.ADD_ATTR,L)),e.ADD_URI_SAFE_ATTR&&p(et,e.ADD_URI_SAFE_ATTR,L),e.FORBID_CONTENTS&&(fe===xt&&(fe=ne(fe)),p(fe,e.FORBID_CONTENTS,L)),Qe&&(x["#text"]=!0),ie&&p(x,["html","head","body"]),x.table&&(p(x,["tbody"]),delete Ee.tbody),y&&y(e),de=e)},Ct=p({},["mi","mo","mn","ms","mtext"]),Nt=p({},["foreignobject","desc","title","annotation-xml"]),Or=p({},["title","style","font","a","script"]),Ne=p({},Pe);p(Ne,Fe),p(Ne,Zt);var nt=p({},He);p(nt,Jt);var Mr=function(e){var t=$e(e);(!t||!t.tagName)&&(t={namespaceURI:ue,tagName:"template"});var i=N(e.tagName),u=N(t.tagName);return rt[e.namespaceURI]?e.namespaceURI===Ce?t.namespaceURI===Z?i==="svg":t.namespaceURI===De?i==="svg"&&(u==="annotation-xml"||Ct[u]):Boolean(Ne[i]):e.namespaceURI===De?t.namespaceURI===Z?i==="math":t.namespaceURI===Ce?i==="math"&&Nt[u]:Boolean(nt[i]):e.namespaceURI===Z?t.namespaceURI===Ce&&!Nt[u]||t.namespaceURI===De&&!Ct[u]?!1:!nt[i]&&(Or[i]||!Ne[i]):!!(se==="application/xhtml+xml"&&rt[e.namespaceURI]):!1},J=function(e){G(s.removed,{element:e});try{e.parentNode.removeChild(e)}catch{try{e.outerHTML=Be}catch{e.remove()}}},it=function(e,t){try{G(s.removed,{attribute:t.getAttributeNode(e),from:t})}catch{G(s.removed,{attribute:null,from:t})}if(t.removeAttribute(e),e==="is"&&!M[e])if(pe||Oe)try{J(t)}catch{}else try{t.setAttribute(e,"")}catch{}},It=function(e){var t,i;if(Je)e="<remove></remove>"+e;else{var u=ve(e,/^[\r\n\t ]+/);i=u&&u[0]}se==="application/xhtml+xml"&&ue===Z&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");var H=W?W.createHTML(e):e;if(ue===Z)try{t=new ur().parseFromString(H,se)}catch{}if(!t||!t.documentElement){t=je.createDocument(ue,"template",null);try{t.documentElement.innerHTML=tt?Be:H}catch{}}var I=t.body||t.documentElement;return e&&i&&I.insertBefore(f.createTextNode(i),I.childNodes[0]||null),ue===Z?Tr.call(t,ie?"html":"body")[0]:ie?t.documentElement:I},kt=function(e){return gr.call(e.ownerDocument||e,e,ye.SHOW_ELEMENT|ye.SHOW_COMMENT|ye.SHOW_TEXT,null,!1)},Dr=function(e){return e instanceof fr&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof mr)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},Ae=function(e){return r(K)==="object"?e instanceof K:e&&r(e)==="object"&&typeof e.nodeType=="number"&&typeof e.nodeName=="string"},Q=function(e,t,i){X[e]&&ee(X[e],function(u){u.call(s,t,i,de)})},Ut=function(e){var t;if(Q("beforeSanitizeElements",e,null),Dr(e)||R(/[\u0080-\uFFFF]/,e.nodeName))return J(e),!0;var i=L(e.nodeName);if(Q("uponSanitizeElement",e,{tagName:i,allowedTags:x}),e.hasChildNodes()&&!Ae(e.firstElementChild)&&(!Ae(e.content)||!Ae(e.content.firstElementChild))&&R(/<[/\w]/g,e.innerHTML)&&R(/<[/\w]/g,e.textContent)||i==="select"&&R(/<template/i,e.innerHTML))return J(e),!0;if(!x[i]||Ee[i]){if(!Ee[i]&&Ft(i)&&(A.tagNameCheck instanceof RegExp&&R(A.tagNameCheck,i)||A.tagNameCheck instanceof Function&&A.tagNameCheck(i)))return!1;if(Qe&&!fe[i]){var u=$e(e)||e.parentNode,H=vr(e)||e.childNodes;if(H&&u)for(var I=H.length,D=I-1;D>=0;--D)u.insertBefore(dr(H[D],!0),hr(e))}return J(e),!0}return e instanceof V&&!Mr(e)||(i==="noscript"||i==="noembed")&&R(/<\/no(script|embed)/i,e.innerHTML)?(J(e),!0):(ce&&e.nodeType===3&&(t=e.textContent,t=U(t,We," "),t=U(t,qe," "),t=U(t,Ye," "),e.textContent!==t&&(G(s.removed,{element:e.cloneNode()}),e.textContent=t)),Q("afterSanitizeElements",e,null),!1)},Pt=function(e,t,i){if(St&&(t==="id"||t==="name")&&(i in f||i in Lr))return!1;if(!(Ke&&!Xe[t]&&R(_r,t))){if(!(bt&&R(Ar,t))){if(!M[t]||Xe[t]){if(!(Ft(e)&&(A.tagNameCheck instanceof RegExp&&R(A.tagNameCheck,e)||A.tagNameCheck instanceof Function&&A.tagNameCheck(e))&&(A.attributeNameCheck instanceof RegExp&&R(A.attributeNameCheck,t)||A.attributeNameCheck instanceof Function&&A.attributeNameCheck(t))||t==="is"&&A.allowCustomizedBuiltInElements&&(A.tagNameCheck instanceof RegExp&&R(A.tagNameCheck,i)||A.tagNameCheck instanceof Function&&A.tagNameCheck(i))))return!1}else if(!et[t]){if(!R(Ve,U(i,Et,""))){if(!((t==="src"||t==="xlink:href"||t==="href")&&e!=="script"&&ge(i,"data:")===0&&Lt[e])){if(!(wt&&!R(br,U(i,Et,"")))){if(i)return!1}}}}}}return!0},Ft=function(e){return e.indexOf("-")>0},Ht=function(e){var t,i,u,H;Q("beforeSanitizeAttributes",e,null);var I=e.attributes;if(I){var D={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:M};for(H=I.length;H--;){t=I[H];var Ie=t,O=Ie.name,st=Ie.namespaceURI;if(i=O==="value"?t.value:q(t.value),u=L(O),D.attrName=u,D.attrValue=i,D.keepAttr=!0,D.forceKeepAttr=void 0,Q("uponSanitizeAttribute",e,D),i=D.attrValue,!D.forceKeepAttr&&(it(O,e),!!D.keepAttr)){if(R(/\/>/i,i)){it(O,e);continue}ce&&(i=U(i,We," "),i=U(i,qe," "),i=U(i,Ye," "));var zt=L(e.nodeName);if(Pt(zt,u,i)){if(Rt&&(u==="id"||u==="name")&&(it(O,e),i=wr+i),W&&r(Re)==="object"&&typeof Re.getAttributeType=="function"&&!st)switch(Re.getAttributeType(zt,u)){case"TrustedHTML":i=W.createHTML(i);break;case"TrustedScriptURL":i=W.createScriptURL(i);break}try{st?e.setAttributeNS(st,O,i):e.setAttribute(O,i),te(s.removed)}catch{}}}}Q("afterSanitizeAttributes",e,null)}},Cr=function o(e){var t,i=kt(e);for(Q("beforeSanitizeShadowDOM",e,null);t=i.nextNode();)Q("uponSanitizeShadowNode",t,null),!Ut(t)&&(t.content instanceof E&&o(t.content),Ht(t));Q("afterSanitizeShadowDOM",e,null)};return s.sanitize=function(o){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t,i,u,H,I;if(tt=!o,tt&&(o="<!-->"),typeof o!="string"&&!Ae(o)){if(typeof o.toString!="function")throw le("toString is not a function");if(o=o.toString(),typeof o!="string")throw le("dirty is not a string, aborting")}if(!s.isSupported){if(r(n.toStaticHTML)==="object"||typeof n.toStaticHTML=="function"){if(typeof o=="string")return n.toStaticHTML(o);if(Ae(o))return n.toStaticHTML(o.outerHTML)}return o}if(Ze||at(e),s.removed=[],typeof o=="string"&&(_e=!1),_e){if(o.nodeName){var D=L(o.nodeName);if(!x[D]||Ee[D])throw le("root node is forbidden and cannot be sanitized in-place")}}else if(o instanceof K)t=It("<!---->"),i=t.ownerDocument.importNode(o,!0),i.nodeType===1&&i.nodeName==="BODY"||i.nodeName==="HTML"?t=i:t.appendChild(i);else{if(!pe&&!ce&&!ie&&o.indexOf("<")===-1)return W&&Me?W.createHTML(o):o;if(t=It(o),!t)return pe?null:Me?Be:""}t&&Je&&J(t.firstChild);for(var Ie=kt(_e?o:t);u=Ie.nextNode();)u.nodeType===3&&u===H||Ut(u)||(u.content instanceof E&&Cr(u.content),Ht(u),H=u);if(H=null,_e)return o;if(pe){if(Oe)for(I=yr.call(t.ownerDocument);t.firstChild;)I.appendChild(t.firstChild);else I=t;return M.shadowroot&&(I=Er.call(l,I,!0)),I}var O=ie?t.outerHTML:t.innerHTML;return ie&&x["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&R(or,t.ownerDocument.doctype.name)&&(O="<!DOCTYPE "+t.ownerDocument.doctype.name+`>
|
|
3
|
+
`+O),ce&&(O=U(O,We," "),O=U(O,qe," "),O=U(O,Ye," ")),W&&Me?W.createHTML(O):O},s.setConfig=function(o){at(o),Ze=!0},s.clearConfig=function(){de=null,Ze=!1},s.isValidAttribute=function(o,e,t){de||at({});var i=L(o),u=L(e);return Pt(i,u,t)},s.addHook=function(o,e){typeof e=="function"&&(X[o]=X[o]||[],G(X[o],e))},s.removeHook=function(o){if(X[o])return te(X[o])},s.removeHooks=function(o){X[o]&&(X[o]=[])},s.removeAllHooks=function(){X={}},s}var pr=yt();return pr})});var re=r=>Object.prototype.toString.call(r).slice(8,-1),P=r=>typeof r=="string"||r instanceof String;var ct=zr(Gt(),1);var pt=[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 Bt=["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 he=16,Br=/^[\da-z+/\-_=]+$/i,jr=/data:[^,]*,[^"]+/g,jt=/data:[^,]*;?base64,[\da-z+/\-_=]+/i,Wr=/[<>"'\s]/g,qr=/%(?:2(?:2|7)|3(?:C|E))/g,Wt=/%(?:2(?:2|7)|3(?:C|E))+?/,Yr=/^(?:text\/(?:ht|x)ml|application\/(?:xhtml\+)?xml|image\/svg\+xml)/,Vr=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/ig,Xr=/^[a-z][\da-z+\-.]*$/,Kr=/^(?:ext|web)\+[a-z]+$/,be=/(?:java|vb)script/,Zr=/^%[\dA-F]{2}$/i,Jr=/%26/g,Qr=/%26(?:(?:l|g|quo)t|%2339);?/g,ut=r=>{if(!P(r))throw new TypeError(`Expected String but got ${re(r)}.`);let a=[];for(let m of r)a.push(`%${m.charCodeAt(0).toString(he).toUpperCase()}`);return a.join("")},qt=r=>{P(r)&&Zr.test(r)&&(r=r.toUpperCase());let[a,m,v,c,T,B]=["&","#","<",">",'"',"'"].map(ut),d;return r===a?d=`${a}amp;`:r===v?d=`${a}lt;`:r===c?d=`${a}gt;`:r===T?d=`${a}quot;`:r===B?d=`${a}${m}39;`:d=r,d},ea=r=>{let a;return/%26lt;?/.test(r)?a="<":/%26gt;?/.test(r)?a=">":/%26quot;?/.test(r)?a='"':/%26%2339;?/.test(r)?a="'":a=r,a},ta=r=>{if(P(r)){if(!Br.test(r))throw new Error(`Invalid base64 data: ${r}`)}else throw new TypeError(`Expected String but got ${re(r)}.`);let a=atob(r),m=Uint8Array.from([...a].map(T=>T.charCodeAt(0))),v=new Set(pt),c;return m.every(T=>v.has(T))?c=a.replace(/\s/g,ut):c=r,c},Yt=(r,a=0)=>{if(!P(r))throw new TypeError(`Expected String but got ${re(r)}.`);if(Number.isInteger(a)){if(a>he)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${re(a)}.`);let m=decodeURIComponent(r);if(/&#/.test(m)){let v=new Set(pt),c=[...m.matchAll(Vr)].reverse();for(let T of c){let[B,d]=T,C;if(/^x[\dA-F]+/i.test(d)?C=parseInt(`0${d}`,he):/^[\d]+/.test(d)&&(C=parseInt(d)),Number.isInteger(C)){let{index:b}=T,[w,h]=[m.substring(0,b),m.substring(b+B.length)];v.has(C)?(m=`${w}${String.fromCharCode(C)}${h}`,(/#x?$/.test(w)||/^#(?:x(?:00)?[2-7]|\d)/.test(h))&&(m=Yt(m,++a))):C<he*he&&(m=`${w}${h}`)}}}return m},ra=r=>{if(!P(r))throw new TypeError(`Expected String but got ${re(r)}.`);return encodeURIComponent(ct.default.sanitize(decodeURIComponent(r)))},mt=class{#e;constructor(){this.#e=new Set(Bt)}get(){return[...this.#e]}has(a){return this.#e.has(a)}add(a){if(P(a)){if(be.test(a)||!Xr.test(a))throw new Error(`Invalid scheme: ${a}`)}else throw new TypeError(`Expected String but got ${re(a)}.`);return this.#e.add(a),[...this.#e]}remove(a){return this.#e.delete(a)}verify(a){let m;if(P(a))try{let{protocol:v}=new URL(a),c=v.replace(/:$/,""),T=c.split("+");m=!be.test(c)&&Kr.test(c)||T.every(B=>this.#e.has(B))}catch{m=!1}return!!m}},ft=class extends mt{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}sanitize(a,m={allow:[],deny:[],only:[]}){if(this.#e>he)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:v,deny:c,only:T,truncate:B}=m??{},d=new Map([["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),C=!1;if(Array.isArray(T)&&T.length){let w=super.get();for(let _ of w)d.set(_,!1);let h=Object.values(T);for(let _ of h)if(P(_)&&(_=_.trim(),!be.test(_))){if(super.has(_))d.set(_,!0);else{try{super.add(_)}catch{}super.has(_)&&d.set(_,!0)}!C&&d.has(_)&&(C=d.get(_))}}else{if(Array.isArray(v)&&v.length){let w=Object.values(v);for(let h of w)if(P(h)&&(h=h.trim(),!be.test(h)))if(super.has(h))d.set(h,!0);else{try{super.add(h)}catch{}super.has(h)&&d.set(h,!0)}}if(Array.isArray(c)&&c.length){let w=Object.values(c);for(let h of w)P(h)&&(h=h.trim(),h&&d.set(h,!1))}}let b;if(super.verify(a)){let{hash:w,href:h,pathname:_,protocol:j,search:ae}=new URL(a),y=j.replace(/:$/,""),g=y.split("+"),z;if(C)z=g.every(k=>d.get(k));else for(let[k,S]of d.entries())if(z=S||y!==k&&g.every($=>$!==k),!z)break;if(z){let k,S=h;if(g.includes("data")){let[$,...ee]=_.split(","),te=`${ee.join(",")}${ae}${w}`,G=$.split(";"),N=te;if(G[G.length-1]==="base64")G.pop(),N=ta(te);else try{let ve=Yt(N),{protocol:U}=new URL(ve.trim());U.replace(/:$/,"").split("+").some(q=>be.test(q))&&(S="")}catch{}let oe=/data:[^,]*,/.test(N);if(N!==te||oe){if(oe){let U=[...N.matchAll(jr)].reverse();for(let ge of U){let[q]=ge;jt.test(q)&&([q]=jt.exec(q)),this.#e++,this.#t.add(q);let R=this.sanitize(q,{allow:["data"]});if(R){let{index:le}=ge,[F,Ue]=[N.substring(0,le),N.substring(le+q.length)];N=`${F}${R}${Ue}`}}this.#t.has(a)?this.#t.delete(a):k=!0}else this.#t.has(a)?this.#t.delete(a):k=!0;S=`${y}:${G.join(";")},${N}`}else this.#t.has(a)?this.#t.delete(a):k=!0}else k=!0;if(!g.includes("data")&&B&&Wt.test(S)){let $=Wt.exec(S),{index:ee}=$;S=S.substring(0,ee)}S?(b=S.replace(Wr,ut).replace(Jr,qt),k&&(b=b.replace(qr,qt),this.#e=0)):(b=S,this.#e=0)}}return b||null}parse(a,m){if(!P(a))throw new TypeError(`Expected String but got ${re(a)}.`);let v=this.sanitize(a,m??{allow:["data","file"]}),c=new Map([["input",a]]);if(v){let T=new URL(v),{pathname:B,protocol:d}=T,C=d.replace(/:$/,"").split("+");if(c.set("valid",!0),C.includes("data")){let b=new Map,[w,...h]=B.split(","),_=`${h.join(",")}`,j=w.split(";"),ae=j[j.length-1]==="base64";ae&&j.pop(),b.set("mime",j.join(";")),b.set("base64",ae);let y;if(!ae&&Yr.test(w)){let g=_,k=[...g.matchAll(Qr)].reverse();for(let S of k){let[$]=S,{index:ee}=S,[te,G]=[g.substring(0,ee),g.substring(ee+$.length)],N=ea($);g=`${te}${N}${G}`}y=ra(g),b.set("data",y)}else b.set("data",_);c.set("data",Object.fromEntries(b));for(let g in T){let z=T[g];if(P(z)){if(P(y))switch(g){case"href":z=`${d}${j.join(";")},${y}`;break;case"pathname":z=`${j.join(";")},${y}`;break;default:}c.set(g,z)}}}else{c.set("data",null);for(let b in T){let w=T[b];P(w)&&c.set(b,w)}}}else c.set("valid",!1);return Object.fromEntries(c)}},ke=new ft,Vt=r=>ke.verify(r),aa=async r=>await Vt(r),Xt=r=>ke.parse(r),na=async r=>await Xt(r),Kt=(r,a)=>{let m=ke.parse(r,a??{allow:[],deny:[],only:[]}),v;if(m){let{href:c}=m;v=c}return v??null},ia=async(r,a)=>await Kt(r,a);export{ke as default,aa as isURI,Vt as isURISync,na as parseURL,Xt as parseURLSync,ia as sanitizeURL,Kt as sanitizeURLSync};
|
|
4
4
|
/*!
|
|
5
5
|
* URL Sanitizer
|
|
6
6
|
* @license MIT
|