update purify to 3.4.5
Signed-off-by: si458 <simonsmith5521@gmail.com>
si458 committed
May 25, 2026 at 15:11 UTC
1be56151e9b710d0172526a67b9d9841255c7f07
4 files changed
+409
-168
public/scripts/purify-min.js
+2
-2
@@ -1,3 +1,3 @@
1
-/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */
2
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,(function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:r}=Object;let{freeze:i,seal:a,create:l}=Object,{apply:c,construct:s}="undefined"!=typeof Reflect&&Reflect;i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t,n){return e.apply(t,n)}),s||(s=function(e,t){return new e(...t)});const u=R(Array.prototype.forEach),m=R(Array.prototype.lastIndexOf),p=R(Array.prototype.pop),f=R(Array.prototype.push),d=R(Array.prototype.splice),h=R(String.prototype.toLowerCase),g=R(String.prototype.toString),T=R(String.prototype.match),y=R(String.prototype.replace),E=R(String.prototype.indexOf),A=R(String.prototype.trim),_=R(Object.prototype.hasOwnProperty),S=R(RegExp.prototype.test),b=(N=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return s(N,t)});var N;function R(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return c(e,t,o)}}function w(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h;t&&t(e,null);let i=o.length;for(;i--;){let t=o[i];if("string"==typeof t){const e=r(t);e!==t&&(n(o)||(o[i]=e),t=e)}e[t]=!0}return e}function O(e){for(let t=0;t<e.length;t++){_(e,t)||(e[t]=null)}return e}function D(t){const n=l(null);for(const[o,r]of e(t)){_(t,o)&&(Array.isArray(r)?n[o]=O(r):r&&"object"==typeof r&&r.constructor===Object?n[o]=D(r):n[o]=r)}return n}function v(e,t){for(;null!==e;){const n=r(e,t);if(n){if(n.get)return R(n.get);if("function"==typeof n.value)return R(n.value)}e=o(e)}return function(){return null}}const L=i(["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"]),C=i(["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"]),x=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),I=i(["animate","color-profile","cursor","discard","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"]),M=i(["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","mprescripts"]),k=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),U=i(["#text"]),z=i(["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","popover","popovertarget","popovertargetaction","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","wrap","xmlns","slot"]),P=i(["accent-height","accumulate","additive","alignment-baseline","amplitude","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","exponent","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","intercept","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","slope","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","tablevalues","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"]),H=i(["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"]),F=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),B=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),W=a(/<%[\w\W]*|[\w\W]*%>/gm),G=a(/\$\{[\w\W]*/gm),Y=a(/^data-[\-\w.\u00B7-\uFFFF]+$/),j=a(/^aria-[\-\w]+$/),X=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),q=a(/^(?:\w+script|data):/i),$=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),K=a(/^html$/i),V=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var Z=Object.freeze({__proto__:null,ARIA_ATTR:j,ATTR_WHITESPACE:$,CUSTOM_ELEMENT:V,DATA_ATTR:Y,DOCTYPE_NAME:K,ERB_EXPR:W,IS_ALLOWED_URI:X,IS_SCRIPT_OR_DATA:q,MUSTACHE_EXPR:B,TMPLIT_EXPR:G});const J=1,Q=3,ee=7,te=8,ne=9,oe=function(){return"undefined"==typeof window?null:window};var re=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:oe();const o=e=>t(e);if(o.version="3.2.6",o.removed=[],!n||!n.document||n.document.nodeType!==ne||!n.Element)return o.isSupported=!1,o;let{document:r}=n;const a=r,c=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:N,Node:R,Element:O,NodeFilter:B,NamedNodeMap:W=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:G,DOMParser:Y,trustedTypes:j}=n,q=O.prototype,$=v(q,"cloneNode"),V=v(q,"remove"),re=v(q,"nextSibling"),ie=v(q,"childNodes"),ae=v(q,"parentNode");if("function"==typeof N){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let le,ce="";const{implementation:se,createNodeIterator:ue,createDocumentFragment:me,getElementsByTagName:pe}=r,{importNode:fe}=a;let de={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof e&&"function"==typeof ae&&se&&void 0!==se.createHTMLDocument;const{MUSTACHE_EXPR:he,ERB_EXPR:ge,TMPLIT_EXPR:Te,DATA_ATTR:ye,ARIA_ATTR:Ee,IS_SCRIPT_OR_DATA:Ae,ATTR_WHITESPACE:_e,CUSTOM_ELEMENT:Se}=Z;let{IS_ALLOWED_URI:be}=Z,Ne=null;const Re=w({},[...L,...C,...x,...M,...U]);let we=null;const Oe=w({},[...z,...P,...H,...F]);let De=Object.seal(l(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}})),ve=null,Le=null,Ce=!0,xe=!0,Ie=!1,Me=!0,ke=!1,Ue=!0,ze=!1,Pe=!1,He=!1,Fe=!1,Be=!1,We=!1,Ge=!0,Ye=!1,je=!0,Xe=!1,qe={},$e=null;const Ke=w({},["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"]);let Ve=null;const Ze=w({},["audio","video","img","source","image","track"]);let Je=null;const Qe=w({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),et="http://www.w3.org/1998/Math/MathML",tt="http://www.w3.org/2000/svg",nt="http://www.w3.org/1999/xhtml";let ot=nt,rt=!1,it=null;const at=w({},[et,tt,nt],g);let lt=w({},["mi","mo","mn","ms","mtext"]),ct=w({},["annotation-xml"]);const st=w({},["title","style","font","a","script"]);let ut=null;const mt=["application/xhtml+xml","text/html"];let pt=null,ft=null;const dt=r.createElement("form"),ht=function(e){return e instanceof RegExp||e instanceof Function},gt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ft||ft!==e){if(e&&"object"==typeof e||(e={}),e=D(e),ut=-1===mt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,pt="application/xhtml+xml"===ut?g:h,Ne=_(e,"ALLOWED_TAGS")?w({},e.ALLOWED_TAGS,pt):Re,we=_(e,"ALLOWED_ATTR")?w({},e.ALLOWED_ATTR,pt):Oe,it=_(e,"ALLOWED_NAMESPACES")?w({},e.ALLOWED_NAMESPACES,g):at,Je=_(e,"ADD_URI_SAFE_ATTR")?w(D(Qe),e.ADD_URI_SAFE_ATTR,pt):Qe,Ve=_(e,"ADD_DATA_URI_TAGS")?w(D(Ze),e.ADD_DATA_URI_TAGS,pt):Ze,$e=_(e,"FORBID_CONTENTS")?w({},e.FORBID_CONTENTS,pt):Ke,ve=_(e,"FORBID_TAGS")?w({},e.FORBID_TAGS,pt):D({}),Le=_(e,"FORBID_ATTR")?w({},e.FORBID_ATTR,pt):D({}),qe=!!_(e,"USE_PROFILES")&&e.USE_PROFILES,Ce=!1!==e.ALLOW_ARIA_ATTR,xe=!1!==e.ALLOW_DATA_ATTR,Ie=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Me=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ke=e.SAFE_FOR_TEMPLATES||!1,Ue=!1!==e.SAFE_FOR_XML,ze=e.WHOLE_DOCUMENT||!1,Fe=e.RETURN_DOM||!1,Be=e.RETURN_DOM_FRAGMENT||!1,We=e.RETURN_TRUSTED_TYPE||!1,He=e.FORCE_BODY||!1,Ge=!1!==e.SANITIZE_DOM,Ye=e.SANITIZE_NAMED_PROPS||!1,je=!1!==e.KEEP_CONTENT,Xe=e.IN_PLACE||!1,be=e.ALLOWED_URI_REGEXP||X,ot=e.NAMESPACE||nt,lt=e.MATHML_TEXT_INTEGRATION_POINTS||lt,ct=e.HTML_INTEGRATION_POINTS||ct,De=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&ht(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(De.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ht(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(De.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(De.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ke&&(xe=!1),Be&&(Fe=!0),qe&&(Ne=w({},U),we=[],!0===qe.html&&(w(Ne,L),w(we,z)),!0===qe.svg&&(w(Ne,C),w(we,P),w(we,F)),!0===qe.svgFilters&&(w(Ne,x),w(we,P),w(we,F)),!0===qe.mathMl&&(w(Ne,M),w(we,H),w(we,F))),e.ADD_TAGS&&(Ne===Re&&(Ne=D(Ne)),w(Ne,e.ADD_TAGS,pt)),e.ADD_ATTR&&(we===Oe&&(we=D(we)),w(we,e.ADD_ATTR,pt)),e.ADD_URI_SAFE_ATTR&&w(Je,e.ADD_URI_SAFE_ATTR,pt),e.FORBID_CONTENTS&&($e===Ke&&($e=D($e)),w($e,e.FORBID_CONTENTS,pt)),je&&(Ne["#text"]=!0),ze&&w(Ne,["html","head","body"]),Ne.table&&(w(Ne,["tbody"]),delete ve.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw b('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw b('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');le=e.TRUSTED_TYPES_POLICY,ce=le.createHTML("")}else void 0===le&&(le=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(j,c)),null!==le&&"string"==typeof ce&&(ce=le.createHTML(""));i&&i(e),ft=e}},Tt=w({},[...C,...x,...I]),yt=w({},[...M,...k]),Et=function(e){f(o.removed,{element:e});try{ae(e).removeChild(e)}catch(t){V(e)}},At=function(e,t){try{f(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){f(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(Fe||Be)try{Et(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},_t=function(e){let t=null,n=null;if(He)e="<remove></remove>"+e;else{const t=T(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===ut&&ot===nt&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=le?le.createHTML(e):e;if(ot===nt)try{t=(new Y).parseFromString(o,ut)}catch(e){}if(!t||!t.documentElement){t=se.createDocument(ot,"template",null);try{t.documentElement.innerHTML=rt?ce:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),ot===nt?pe.call(t,ze?"html":"body")[0]:ze?t.documentElement:i},St=function(e){return ue.call(e.ownerDocument||e,e,B.SHOW_ELEMENT|B.SHOW_COMMENT|B.SHOW_TEXT|B.SHOW_PROCESSING_INSTRUCTION|B.SHOW_CDATA_SECTION,null)},bt=function(e){return e instanceof G&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof W)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Nt=function(e){return"function"==typeof R&&e instanceof R};function Rt(e,t,n){u(e,(e=>{e.call(o,t,n,ft)}))}const wt=function(e){let t=null;if(Rt(de.beforeSanitizeElements,e,null),bt(e))return Et(e),!0;const n=pt(e.nodeName);if(Rt(de.uponSanitizeElement,e,{tagName:n,allowedTags:Ne}),Ue&&e.hasChildNodes()&&!Nt(e.firstElementChild)&&S(/<[/\w!]/g,e.innerHTML)&&S(/<[/\w!]/g,e.textContent))return Et(e),!0;if(e.nodeType===ee)return Et(e),!0;if(Ue&&e.nodeType===te&&S(/<[/\w]/g,e.data))return Et(e),!0;if(!Ne[n]||ve[n]){if(!ve[n]&&Dt(n)){if(De.tagNameCheck instanceof RegExp&&S(De.tagNameCheck,n))return!1;if(De.tagNameCheck instanceof Function&&De.tagNameCheck(n))return!1}if(je&&!$e[n]){const t=ae(e)||e.parentNode,n=ie(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=$(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,re(e))}}}return Et(e),!0}return e instanceof O&&!function(e){let t=ae(e);t&&t.tagName||(t={namespaceURI:ot,tagName:"template"});const n=h(e.tagName),o=h(t.tagName);return!!it[e.namespaceURI]&&(e.namespaceURI===tt?t.namespaceURI===nt?"svg"===n:t.namespaceURI===et?"svg"===n&&("annotation-xml"===o||lt[o]):Boolean(Tt[n]):e.namespaceURI===et?t.namespaceURI===nt?"math"===n:t.namespaceURI===tt?"math"===n&&ct[o]:Boolean(yt[n]):e.namespaceURI===nt?!(t.namespaceURI===tt&&!ct[o])&&!(t.namespaceURI===et&&!lt[o])&&!yt[n]&&(st[n]||!Tt[n]):!("application/xhtml+xml"!==ut||!it[e.namespaceURI]))}(e)?(Et(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!S(/<\/no(script|embed|frames)/i,e.innerHTML)?(ke&&e.nodeType===Q&&(t=e.textContent,u([he,ge,Te],(e=>{t=y(t,e," ")})),e.textContent!==t&&(f(o.removed,{element:e.cloneNode()}),e.textContent=t)),Rt(de.afterSanitizeElements,e,null),!1):(Et(e),!0)},Ot=function(e,t,n){if(Ge&&("id"===t||"name"===t)&&(n in r||n in dt))return!1;if(xe&&!Le[t]&&S(ye,t));else if(Ce&&S(Ee,t));else if(!we[t]||Le[t]){if(!(Dt(e)&&(De.tagNameCheck instanceof RegExp&&S(De.tagNameCheck,e)||De.tagNameCheck instanceof Function&&De.tagNameCheck(e))&&(De.attributeNameCheck instanceof RegExp&&S(De.attributeNameCheck,t)||De.attributeNameCheck instanceof Function&&De.attributeNameCheck(t))||"is"===t&&De.allowCustomizedBuiltInElements&&(De.tagNameCheck instanceof RegExp&&S(De.tagNameCheck,n)||De.tagNameCheck instanceof Function&&De.tagNameCheck(n))))return!1}else if(Je[t]);else if(S(be,y(n,_e,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==E(n,"data:")||!Ve[e]){if(Ie&&!S(Ae,y(n,_e,"")));else if(n)return!1}else;return!0},Dt=function(e){return"annotation-xml"!==e&&T(e,Se)},vt=function(e){Rt(de.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||bt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:we,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=pt(a),m=c;let f="value"===a?m:A(m);if(n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,Rt(de.uponSanitizeAttribute,e,n),f=n.attrValue,!Ye||"id"!==s&&"name"!==s||(At(a,e),f="user-content-"+f),Ue&&S(/((--!?|])>)|<\/(style|title)/i,f)){At(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){At(a,e);continue}if(!Me&&S(/\/>/i,f)){At(a,e);continue}ke&&u([he,ge,Te],(e=>{f=y(f,e," ")}));const d=pt(e.nodeName);if(Ot(d,s,f)){if(le&&"object"==typeof j&&"function"==typeof j.getAttributeType)if(l);else switch(j.getAttributeType(d,s)){case"TrustedHTML":f=le.createHTML(f);break;case"TrustedScriptURL":f=le.createScriptURL(f)}if(f!==m)try{l?e.setAttributeNS(l,a,f):e.setAttribute(a,f),bt(e)?Et(e):p(o.removed)}catch(t){At(a,e)}}else At(a,e)}Rt(de.afterSanitizeAttributes,e,null)},Lt=function e(t){let n=null;const o=St(t);for(Rt(de.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)Rt(de.uponSanitizeShadowNode,n,null),wt(n),vt(n),n.content instanceof s&&e(n.content);Rt(de.afterSanitizeShadowDOM,t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(rt=!e,rt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Nt(e)){if("function"!=typeof e.toString)throw b("toString is not a function");if("string"!=typeof(e=e.toString()))throw b("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Pe||gt(t),o.removed=[],"string"==typeof e&&(Xe=!1),Xe){if(e.nodeName){const t=pt(e.nodeName);if(!Ne[t]||ve[t])throw b("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof R)n=_t("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===J&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!ke&&!ze&&-1===e.indexOf("<"))return le&&We?le.createHTML(e):e;if(n=_t(e),!n)return Fe?null:We?ce:""}n&&He&&Et(n.firstChild);const c=St(Xe?e:n);for(;i=c.nextNode();)wt(i),vt(i),i.content instanceof s&&Lt(i.content);if(Xe)return e;if(Fe){if(Be)for(l=me.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(we.shadowroot||we.shadowrootmode)&&(l=fe.call(a,l,!0)),l}let m=ze?n.outerHTML:n.innerHTML;return ze&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&S(K,n.ownerDocument.doctype.name)&&(m="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+m),ke&&u([he,ge,Te],(e=>{m=y(m,e," ")})),le&&We?le.createHTML(m):m},o.setConfig=function(){gt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Pe=!0},o.clearConfig=function(){ft=null,Pe=!1},o.isValidAttribute=function(e,t,n){ft||gt({});const o=pt(e),r=pt(t);return Ot(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&f(de[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=m(de[e],t);return-1===n?void 0:d(de[e],n,1)[0]}return p(de[e])},o.removeHooks=function(e){de[e]=[]},o.removeAllHooks=function(){de={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();return re}));
1
+/*! @license DOMPurify 3.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.5/LICENSE */
2
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function t(t,n){return function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t);else for(;!(c=(o=i.call(n)).done)&&(l.push(o.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw r}}return l}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const n=Object.entries,o=Object.setPrototypeOf,r=Object.isFrozen,i=Object.getPrototypeOf,a=Object.getOwnPropertyDescriptor;let l=Object.freeze,c=Object.seal,s=Object.create,u="undefined"!=typeof Reflect&&Reflect,f=u.apply,m=u.construct;l||(l=function(e){return e}),c||(c=function(e){return e}),f||(f=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return e.apply(t,o)}),m||(m=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const p=L(Array.prototype.forEach),d=L(Array.prototype.lastIndexOf),h=L(Array.prototype.pop),g=L(Array.prototype.push),y=L(Array.prototype.splice),T=Array.isArray,b=L(String.prototype.toLowerCase),A=L(String.prototype.toString),S=L(String.prototype.match),E=L(String.prototype.replace),N=L(String.prototype.indexOf),_=L(String.prototype.trim),O=L(Number.prototype.toString),D=L(Boolean.prototype.toString),R="undefined"==typeof BigInt?null:L(BigInt.prototype.toString),w="undefined"==typeof Symbol?null:L(Symbol.prototype.toString),I=L(Object.prototype.hasOwnProperty),v=L(Object.prototype.toString),C=L(RegExp.prototype.test),x=(k=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return m(k,t)});var k;function L(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return f(e,t,o)}}function M(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b;if(o&&o(e,null),!T(t))return e;let i=t.length;for(;i--;){let o=t[i];if("string"==typeof o){const e=n(o);e!==o&&(r(t)||(t[i]=e),o=e)}e[o]=!0}return e}function F(e){for(let t=0;t<e.length;t++){I(e,t)||(e[t]=null)}return e}function z(e){const o=s(null);for(const i of n(e)){var r=t(i,2);const n=r[0],a=r[1];I(e,n)&&(T(a)?o[n]=F(a):a&&"object"==typeof a&&a.constructor===Object?o[n]=z(a):o[n]=a)}return o}function P(e,t){for(;null!==e;){const n=a(e,t);if(n){if(n.get)return L(n.get);if("function"==typeof n.value)return L(n.value)}e=i(e)}return function(){return null}}const U=l(["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","search","section","select","shadow","slot","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"]),H=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),B=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),G=l(["animate","color-profile","cursor","discard","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"]),j=l(["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","mprescripts"]),W=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Y=l(["#text"]),X=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","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","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),q=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","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","exponent","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","intercept","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","mask-type","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","slope","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","tablevalues","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"]),$=l(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","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"]),K=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),V=c(/{{[\w\W]*|^[\w\W]*}}/g),Z=c(/<%[\w\W]*|^[\w\W]*%>/g),J=c(/\${[\w\W]*/g),Q=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),ee=c(/^aria-[\-\w]+$/),te=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ne=c(/^(?:\w+script|data):/i),oe=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),re=c(/^html$/i),ie=c(/^[a-z][.\w]*(-[.\w]+)+$/i),ae=1,le=3,ce=7,se=8,ue=9,fe=function(){return"undefined"==typeof window?null:window};var me=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:fe();const o=t=>e(t);if(o.version="3.4.5",o.removed=[],!t||!t.document||t.document.nodeType!==ue||!t.Element)return o.isSupported=!1,o;let r=t.document;const i=r,a=i.currentScript,c=t.DocumentFragment,u=t.HTMLTemplateElement,f=t.Node,m=t.Element,k=t.NodeFilter,L=t.NamedNodeMap,F=void 0===L?t.NamedNodeMap||t.MozNamedAttrMap:L,me=t.HTMLFormElement,pe=t.DOMParser,de=t.trustedTypes,he=m.prototype,ge=P(he,"cloneNode"),ye=P(he,"remove"),Te=P(he,"nextSibling"),be=P(he,"childNodes"),Ae=P(he,"parentNode"),Se=f&&f.prototype?P(f.prototype,"nodeType"):null;if("function"==typeof u){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let Ee,Ne="";const _e=r,Oe=_e.implementation,De=_e.createNodeIterator,Re=_e.createDocumentFragment,we=_e.getElementsByTagName,Ie=i.importNode;let ve={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof n&&"function"==typeof Ae&&Oe&&void 0!==Oe.createHTMLDocument;const Ce=V,xe=Z,ke=J,Le=Q,Me=ee,Fe=ne,ze=oe,Pe=ie;let Ue=te,He=null;const Be=M({},[...U,...H,...B,...j,...Y]);let Ge=null;const je=M({},[...X,...q,...$,...K]);let We=Object.seal(s(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,Xe=null;const qe=Object.seal(s(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let $e=!0,Ke=!0,Ve=!1,Ze=!0,Je=!1,Qe=!0,et=!1,tt=!1,nt=!1,ot=!1,rt=!1,it=!1,at=!0,lt=!1;const ct="user-content-";let st=!0,ut=!1,ft={},mt=null;const pt=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"]);let dt=null;const ht=M({},["audio","video","img","source","image","track"]);let gt=null;const yt=M({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Tt="http://www.w3.org/1998/Math/MathML",bt="http://www.w3.org/2000/svg",At="http://www.w3.org/1999/xhtml";let St=At,Et=!1,Nt=null;const _t=M({},[Tt,bt,At],A);let Ot=M({},["mi","mo","mn","ms","mtext"]),Dt=M({},["annotation-xml"]);const Rt=M({},["title","style","font","a","script"]);let wt=null;const It=["application/xhtml+xml","text/html"];let vt=null,Ct=null;const xt=r.createElement("form"),kt=function(e){return e instanceof RegExp||e instanceof Function},Lt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Ct&&Ct===e)return;e&&"object"==typeof e||(e={}),e=z(e),wt=-1===It.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,vt="application/xhtml+xml"===wt?A:b,He=I(e,"ALLOWED_TAGS")&&T(e.ALLOWED_TAGS)?M({},e.ALLOWED_TAGS,vt):Be,Ge=I(e,"ALLOWED_ATTR")&&T(e.ALLOWED_ATTR)?M({},e.ALLOWED_ATTR,vt):je,Nt=I(e,"ALLOWED_NAMESPACES")&&T(e.ALLOWED_NAMESPACES)?M({},e.ALLOWED_NAMESPACES,A):_t,gt=I(e,"ADD_URI_SAFE_ATTR")&&T(e.ADD_URI_SAFE_ATTR)?M(z(yt),e.ADD_URI_SAFE_ATTR,vt):yt,dt=I(e,"ADD_DATA_URI_TAGS")&&T(e.ADD_DATA_URI_TAGS)?M(z(ht),e.ADD_DATA_URI_TAGS,vt):ht,mt=I(e,"FORBID_CONTENTS")&&T(e.FORBID_CONTENTS)?M({},e.FORBID_CONTENTS,vt):pt,Ye=I(e,"FORBID_TAGS")&&T(e.FORBID_TAGS)?M({},e.FORBID_TAGS,vt):z({}),Xe=I(e,"FORBID_ATTR")&&T(e.FORBID_ATTR)?M({},e.FORBID_ATTR,vt):z({}),ft=!!I(e,"USE_PROFILES")&&(e.USE_PROFILES&&"object"==typeof e.USE_PROFILES?z(e.USE_PROFILES):e.USE_PROFILES),$e=!1!==e.ALLOW_ARIA_ATTR,Ke=!1!==e.ALLOW_DATA_ATTR,Ve=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ze=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Je=e.SAFE_FOR_TEMPLATES||!1,Qe=!1!==e.SAFE_FOR_XML,et=e.WHOLE_DOCUMENT||!1,ot=e.RETURN_DOM||!1,rt=e.RETURN_DOM_FRAGMENT||!1,it=e.RETURN_TRUSTED_TYPE||!1,nt=e.FORCE_BODY||!1,at=!1!==e.SANITIZE_DOM,lt=e.SANITIZE_NAMED_PROPS||!1,st=!1!==e.KEEP_CONTENT,ut=e.IN_PLACE||!1,Ue=function(e){try{return C(e,""),!0}catch(e){return!1}}(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:te,St="string"==typeof e.NAMESPACE?e.NAMESPACE:At,Ot=I(e,"MATHML_TEXT_INTEGRATION_POINTS")&&e.MATHML_TEXT_INTEGRATION_POINTS&&"object"==typeof e.MATHML_TEXT_INTEGRATION_POINTS?z(e.MATHML_TEXT_INTEGRATION_POINTS):M({},["mi","mo","mn","ms","mtext"]),Dt=I(e,"HTML_INTEGRATION_POINTS")&&e.HTML_INTEGRATION_POINTS&&"object"==typeof e.HTML_INTEGRATION_POINTS?z(e.HTML_INTEGRATION_POINTS):M({},["annotation-xml"]);const t=I(e,"CUSTOM_ELEMENT_HANDLING")&&e.CUSTOM_ELEMENT_HANDLING&&"object"==typeof e.CUSTOM_ELEMENT_HANDLING?z(e.CUSTOM_ELEMENT_HANDLING):s(null);if(We=s(null),I(t,"tagNameCheck")&&kt(t.tagNameCheck)&&(We.tagNameCheck=t.tagNameCheck),I(t,"attributeNameCheck")&&kt(t.attributeNameCheck)&&(We.attributeNameCheck=t.attributeNameCheck),I(t,"allowCustomizedBuiltInElements")&&"boolean"==typeof t.allowCustomizedBuiltInElements&&(We.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),Je&&(Ke=!1),rt&&(ot=!0),ft&&(He=M({},Y),Ge=s(null),!0===ft.html&&(M(He,U),M(Ge,X)),!0===ft.svg&&(M(He,H),M(Ge,q),M(Ge,K)),!0===ft.svgFilters&&(M(He,B),M(Ge,q),M(Ge,K)),!0===ft.mathMl&&(M(He,j),M(Ge,$),M(Ge,K))),qe.tagCheck=null,qe.attributeCheck=null,I(e,"ADD_TAGS")&&("function"==typeof e.ADD_TAGS?qe.tagCheck=e.ADD_TAGS:T(e.ADD_TAGS)&&(He===Be&&(He=z(He)),M(He,e.ADD_TAGS,vt))),I(e,"ADD_ATTR")&&("function"==typeof e.ADD_ATTR?qe.attributeCheck=e.ADD_ATTR:T(e.ADD_ATTR)&&(Ge===je&&(Ge=z(Ge)),M(Ge,e.ADD_ATTR,vt))),I(e,"ADD_URI_SAFE_ATTR")&&T(e.ADD_URI_SAFE_ATTR)&&M(gt,e.ADD_URI_SAFE_ATTR,vt),I(e,"FORBID_CONTENTS")&&T(e.FORBID_CONTENTS)&&(mt===pt&&(mt=z(mt)),M(mt,e.FORBID_CONTENTS,vt)),I(e,"ADD_FORBID_CONTENTS")&&T(e.ADD_FORBID_CONTENTS)&&(mt===pt&&(mt=z(mt)),M(mt,e.ADD_FORBID_CONTENTS,vt)),st&&(He["#text"]=!0),et&&M(He,["html","head","body"]),He.table&&(M(He,["tbody"]),delete Ye.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw x('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw x('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Ee=e.TRUSTED_TYPES_POLICY,Ne=Ee.createHTML("")}else void 0===Ee&&(Ee=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(de,a)),null!==Ee&&"string"==typeof Ne&&(Ne=Ee.createHTML(""));l&&l(e),Ct=e},Mt=M({},[...H,...B,...G]),Ft=M({},[...j,...W]),zt=function(e){g(o.removed,{element:e});try{Ae(e).removeChild(e)}catch(t){ye(e)}},Pt=function(e,t){try{g(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){g(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(ot||rt)try{zt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},Ut=function(e){let t=null,n=null;if(nt)e="<remove></remove>"+e;else{const t=S(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===wt&&St===At&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=Ee?Ee.createHTML(e):e;if(St===At)try{t=(new pe).parseFromString(o,wt)}catch(e){}if(!t||!t.documentElement){t=Oe.createDocument(St,"template",null);try{t.documentElement.innerHTML=Et?Ne:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),St===At?we.call(t,et?"html":"body")[0]:et?t.documentElement:i},Ht=function(e){return De.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT|k.SHOW_PROCESSING_INSTRUCTION|k.SHOW_CDATA_SECTION,null)},Bt=function(e){e.normalize();const t=De.call(e.ownerDocument||e,e,k.SHOW_TEXT|k.SHOW_COMMENT|k.SHOW_CDATA_SECTION|k.SHOW_PROCESSING_INSTRUCTION,null);let n=t.nextNode();for(;n;){let e=n.data;p([Ce,xe,ke],t=>{e=E(e,t," ")}),n.data=e,n=t.nextNode()}},Gt=function(e){return e instanceof me&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof F)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},jt=function(e){if(!Se||"object"!=typeof e||null===e)return!1;try{return"number"==typeof Se(e)}catch(e){return!1}};function Wt(e,t,n){p(e,e=>{e.call(o,t,n,Ct)})}const Yt=function(e){let t=null;if(Wt(ve.beforeSanitizeElements,e,null),Gt(e))return zt(e),!0;const n=vt(e.nodeName);if(Wt(ve.uponSanitizeElement,e,{tagName:n,allowedTags:He}),Qe&&e.hasChildNodes()&&!jt(e.firstElementChild)&&C(/<[/\w!]/g,e.innerHTML)&&C(/<[/\w!]/g,e.textContent))return zt(e),!0;if(Qe&&e.namespaceURI===At&&"style"===n&&jt(e.firstElementChild))return zt(e),!0;if(e.nodeType===ce)return zt(e),!0;if(Qe&&e.nodeType===se&&C(/<[/\w]/g,e.data))return zt(e),!0;if(Ye[n]||!(qe.tagCheck instanceof Function&&qe.tagCheck(n))&&!He[n]){if(!Ye[n]&&$t(n)){if(We.tagNameCheck instanceof RegExp&&C(We.tagNameCheck,n))return!1;if(We.tagNameCheck instanceof Function&&We.tagNameCheck(n))return!1}if(st&&!mt[n]){const t=Ae(e)||e.parentNode,n=be(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=ge(n[o],!0);t.insertBefore(r,Te(e))}}}return zt(e),!0}return e instanceof m&&!function(e){let t=Ae(e);t&&t.tagName||(t={namespaceURI:St,tagName:"template"});const n=b(e.tagName),o=b(t.tagName);return!!Nt[e.namespaceURI]&&(e.namespaceURI===bt?t.namespaceURI===At?"svg"===n:t.namespaceURI===Tt?"svg"===n&&("annotation-xml"===o||Ot[o]):Boolean(Mt[n]):e.namespaceURI===Tt?t.namespaceURI===At?"math"===n:t.namespaceURI===bt?"math"===n&&Dt[o]:Boolean(Ft[n]):e.namespaceURI===At?!(t.namespaceURI===bt&&!Dt[o])&&!(t.namespaceURI===Tt&&!Ot[o])&&!Ft[n]&&(Rt[n]||!Mt[n]):!("application/xhtml+xml"!==wt||!Nt[e.namespaceURI]))}(e)?(zt(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!C(/<\/no(script|embed|frames)/i,e.innerHTML)?(Je&&e.nodeType===le&&(t=e.textContent,p([Ce,xe,ke],e=>{t=E(t,e," ")}),e.textContent!==t&&(g(o.removed,{element:e.cloneNode()}),e.textContent=t)),Wt(ve.afterSanitizeElements,e,null),!1):(zt(e),!0)},Xt=function(e,t,n){if(Xe[t])return!1;if(at&&("id"===t||"name"===t)&&(n in r||n in xt))return!1;const o=Ge[t]||qe.attributeCheck instanceof Function&&qe.attributeCheck(t,e);if(Ke&&!Xe[t]&&C(Le,t));else if($e&&C(Me,t));else if(!o||Xe[t]){if(!($t(e)&&(We.tagNameCheck instanceof RegExp&&C(We.tagNameCheck,e)||We.tagNameCheck instanceof Function&&We.tagNameCheck(e))&&(We.attributeNameCheck instanceof RegExp&&C(We.attributeNameCheck,t)||We.attributeNameCheck instanceof Function&&We.attributeNameCheck(t,e))||"is"===t&&We.allowCustomizedBuiltInElements&&(We.tagNameCheck instanceof RegExp&&C(We.tagNameCheck,n)||We.tagNameCheck instanceof Function&&We.tagNameCheck(n))))return!1}else if(gt[t]);else if(C(Ue,E(n,ze,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==N(n,"data:")||!dt[e]){if(Ve&&!C(Fe,E(n,ze,"")));else if(n)return!1}else;return!0},qt=M({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),$t=function(e){return!qt[b(e)]&&C(Pe,e)},Kt=function(e){Wt(ve.beforeSanitizeAttributes,e,null);const t=e.attributes;if(!t||Gt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ge,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],a=i.name,l=i.namespaceURI,c=i.value,s=vt(a),u=c;let f="value"===a?u:_(u);if(n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,Wt(ve.uponSanitizeAttribute,e,n),f=n.attrValue,!lt||"id"!==s&&"name"!==s||0===N(f,ct)||(Pt(a,e),f=ct+f),Qe&&C(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,f)){Pt(a,e);continue}if("attributename"===s&&S(f,"href")){Pt(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){Pt(a,e);continue}if(!Ze&&C(/\/>/i,f)){Pt(a,e);continue}Je&&p([Ce,xe,ke],e=>{f=E(f,e," ")});const m=vt(e.nodeName);if(Xt(m,s,f)){if(Ee&&"object"==typeof de&&"function"==typeof de.getAttributeType)if(l);else switch(de.getAttributeType(m,s)){case"TrustedHTML":f=Ee.createHTML(f);break;case"TrustedScriptURL":f=Ee.createScriptURL(f)}if(f!==u)try{l?e.setAttributeNS(l,a,f):e.setAttribute(a,f),Gt(e)?zt(e):h(o.removed)}catch(t){Pt(a,e)}}else Pt(a,e)}Wt(ve.afterSanitizeAttributes,e,null)},Vt=function(e){let t=null;const n=Ht(e);for(Wt(ve.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)Wt(ve.uponSanitizeShadowNode,t,null),Yt(t),Kt(t),t.content instanceof c&&Vt(t.content);Wt(ve.afterSanitizeShadowDOM,e,null)},Zt=function(e){if(e.nodeType===ae&&e.shadowRoot instanceof c){const t=e.shadowRoot;Zt(t),Vt(t)}const t=e.childNodes;if(!t)return;const n=[];p(t,e=>{g(n,e)});for(const e of n)Zt(e)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,a=null,l=null;if(Et=!e,Et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!jt(e)&&"string"!=typeof(e=function(e){switch(typeof e){case"string":return e;case"number":return O(e);case"boolean":return D(e);case"bigint":return R?R(e):"0";case"symbol":return w?w(e):"Symbol()";case"undefined":default:return v(e);case"function":case"object":{if(null===e)return v(e);const t=e,n=P(t,"toString");if("function"==typeof n){const e=n(t);return"string"==typeof e?e:v(e)}return v(e)}}}(e)))throw x("dirty is not a string, aborting");if(!o.isSupported)return e;if(tt||Lt(t),o.removed=[],"string"==typeof e&&(ut=!1),ut){const t=e.nodeName;if("string"==typeof t){const e=vt(t);if(!He[e]||Ye[e])throw x("root node is forbidden and cannot be sanitized in-place")}Zt(e)}else if(jt(e))n=Ut("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===ae&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r),Zt(r);else{if(!ot&&!Je&&!et&&-1===e.indexOf("<"))return Ee&&it?Ee.createHTML(e):e;if(n=Ut(e),!n)return ot?null:it?Ne:""}n&&nt&&zt(n.firstChild);const s=Ht(ut?e:n);for(;a=s.nextNode();)Yt(a),Kt(a),a.content instanceof c&&Vt(a.content);if(ut)return Je&&Bt(e),e;if(ot){if(Je&&Bt(n),rt)for(l=Re.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Ge.shadowroot||Ge.shadowrootmode)&&(l=Ie.call(i,l,!0)),l}let u=et?n.outerHTML:n.innerHTML;return et&&He["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&C(re,n.ownerDocument.doctype.name)&&(u="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+u),Je&&p([Ce,xe,ke],e=>{u=E(u,e," ")}),Ee&&it?Ee.createHTML(u):u},o.setConfig=function(){Lt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),tt=!0},o.clearConfig=function(){Ct=null,tt=!1},o.isValidAttribute=function(e,t,n){Ct||Lt({});const o=vt(e),r=vt(t);return Xt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&g(ve[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=d(ve[e],t);return-1===n?void 0:y(ve[e],n,1)[0]}return h(ve[e])},o.removeHooks=function(e){ve[e]=[]},o.removeAllHooks=function(){ve={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();return me});
3
//# sourceMappingURL=purify.min.js.map
public/scripts/purify.js
+405
-164
@@ -1,4 +1,4 @@
1
-/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */
1
+/*! @license DOMPurify 3.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.5/LICENSE */
2
3
(function (global, factory) {
4
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -6,22 +6,63 @@
6
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());
7
})(this, (function () { 'use strict';
8
9
- const {
10
- entries,
11
- setPrototypeOf,
12
- isFrozen,
13
- getPrototypeOf,
14
- getOwnPropertyDescriptor
15
- } = Object;
16
- let {
17
- freeze,
18
- seal,
19
- create
20
- } = Object; // eslint-disable-line import/no-mutable-exports
21
- let {
22
- apply,
23
- construct
24
- } = typeof Reflect !== 'undefined' && Reflect;
9
+ function _arrayLikeToArray(r, a) {
10
+ (null == a || a > r.length) && (a = r.length);
11
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
12
+ return n;
13
+ }
14
+ function _arrayWithHoles(r) {
15
+ if (Array.isArray(r)) return r;
16
+ }
17
+ function _iterableToArrayLimit(r, l) {
18
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
19
+ if (null != t) {
20
+ var e,
21
+ n,
22
+ i,
23
+ u,
24
+ a = [],
25
+ f = true,
26
+ o = false;
27
+ try {
28
+ if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
29
+ } catch (r) {
30
+ o = true, n = r;
31
+ } finally {
32
+ try {
33
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
34
+ } finally {
35
+ if (o) throw n;
36
+ }
37
+ }
38
+ return a;
39
+ }
40
+ }
41
+ function _nonIterableRest() {
42
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43
+ }
44
+ function _slicedToArray(r, e) {
45
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
46
+ }
47
+ function _unsupportedIterableToArray(r, a) {
48
+ if (r) {
49
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
50
+ var t = {}.toString.call(r).slice(8, -1);
51
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
52
+ }
53
+ }
54
+
55
+ const entries = Object.entries,
56
+ setPrototypeOf = Object.setPrototypeOf,
57
+ isFrozen = Object.isFrozen,
58
+ getPrototypeOf = Object.getPrototypeOf,
59
+ getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
60
+ let freeze = Object.freeze,
61
+ seal = Object.seal,
62
+ create = Object.create; // eslint-disable-line import/no-mutable-exports
63
+ let _ref = typeof Reflect !== 'undefined' && Reflect,
64
+ apply = _ref.apply,
65
+ construct = _ref.construct;
66
if (!freeze) {
67
freeze = function freeze(x) {
68
return x;
@@ -33,12 +74,18 @@
74
};
75
}
76
if (!apply) {
36
- apply = function apply(fun, thisValue, args) {
37
- return fun.apply(thisValue, args);
77
+ apply = function apply(func, thisArg) {
78
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
79
+ args[_key - 2] = arguments[_key];
80
+ }
81
+ return func.apply(thisArg, args);
82
};
83
}
84
if (!construct) {
41
- construct = function construct(Func, args) {
85
+ construct = function construct(Func) {
86
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
87
+ args[_key2 - 1] = arguments[_key2];
88
+ }
89
return new Func(...args);
90
};
91
}
@@ -47,13 +94,19 @@
94
const arrayPop = unapply(Array.prototype.pop);
95
const arrayPush = unapply(Array.prototype.push);
96
const arraySplice = unapply(Array.prototype.splice);
97
+ const arrayIsArray = Array.isArray;
98
const stringToLowerCase = unapply(String.prototype.toLowerCase);
99
const stringToString = unapply(String.prototype.toString);
100
const stringMatch = unapply(String.prototype.match);
101
const stringReplace = unapply(String.prototype.replace);
102
const stringIndexOf = unapply(String.prototype.indexOf);
103
const stringTrim = unapply(String.prototype.trim);
104
+ const numberToString = unapply(Number.prototype.toString);
105
+ const booleanToString = unapply(Boolean.prototype.toString);
106
+ const bigintToString = typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);
107
+ const symbolToString = typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);
108
const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
109
+ const objectToString = unapply(Object.prototype.toString);
110
const regExpTest = unapply(RegExp.prototype.test);
111
const typeErrorCreate = unconstruct(TypeError);
112
/**
@@ -67,8 +120,8 @@
120
if (thisArg instanceof RegExp) {
121
thisArg.lastIndex = 0;
122
}
70
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
71
- args[_key - 1] = arguments[_key];
123
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
124
+ args[_key3 - 1] = arguments[_key3];
125
}
126
return apply(func, thisArg, args);
127
};
@@ -79,12 +132,12 @@
132
* @param func - The constructor function to be wrapped and called.
133
* @returns A new function that constructs an instance of the given constructor function with the provided arguments.
134
*/
82
- function unconstruct(func) {
135
+ function unconstruct(Func) {
136
return function () {
84
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
85
- args[_key2] = arguments[_key2];
137
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
138
+ args[_key4] = arguments[_key4];
139
}
87
- return construct(func, args);
140
+ return construct(Func, args);
141
};
142
}
143
/**
@@ -103,6 +156,9 @@
156
// Prevent prototype setters from intercepting set as a this value.
157
setPrototypeOf(set, null);
158
}
159
+ if (!arrayIsArray(array)) {
160
+ return set;
161
+ }
162
let l = array.length;
163
while (l--) {
164
let element = array[l];
@@ -143,10 +199,13 @@
199
*/
200
function clone(object) {
201
const newObject = create(null);
146
- for (const [property, value] of entries(object)) {
202
+ for (const _ref2 of entries(object)) {
203
+ var _ref3 = _slicedToArray(_ref2, 2);
204
+ const property = _ref3[0];
205
+ const value = _ref3[1];
206
const isPropertyExist = objectHasOwnProperty(object, property);
207
if (isPropertyExist) {
149
- if (Array.isArray(value)) {
208
+ if (arrayIsArray(value)) {
209
newObject[property] = cleanArray(value);
210
} else if (value && typeof value === 'object' && value.constructor === Object) {
211
newObject[property] = clone(value);
@@ -157,6 +216,58 @@
216
}
217
return newObject;
218
}
219
+ /**
220
+ * Convert non-node values into strings without depending on direct property access.
221
+ *
222
+ * @param value - The value to stringify.
223
+ * @returns A string representation of the provided value.
224
+ */
225
+ function stringifyValue(value) {
226
+ switch (typeof value) {
227
+ case 'string':
228
+ {
229
+ return value;
230
+ }
231
+ case 'number':
232
+ {
233
+ return numberToString(value);
234
+ }
235
+ case 'boolean':
236
+ {
237
+ return booleanToString(value);
238
+ }
239
+ case 'bigint':
240
+ {
241
+ return bigintToString ? bigintToString(value) : '0';
242
+ }
243
+ case 'symbol':
244
+ {
245
+ return symbolToString ? symbolToString(value) : 'Symbol()';
246
+ }
247
+ case 'undefined':
248
+ {
249
+ return objectToString(value);
250
+ }
251
+ case 'function':
252
+ case 'object':
253
+ {
254
+ if (value === null) {
255
+ return objectToString(value);
256
+ }
257
+ const valueAsRecord = value;
258
+ const valueToString = lookupGetter(valueAsRecord, 'toString');
259
+ if (typeof valueToString === 'function') {
260
+ const stringified = valueToString(valueAsRecord);
261
+ return typeof stringified === 'string' ? stringified : objectToString(stringified);
262
+ }
263
+ return objectToString(value);
264
+ }
265
+ default:
266
+ {
267
+ return objectToString(value);
268
+ }
269
+ }
270
+ }
271
/**
272
* This method automatically checks if the prop is function or getter and behaves accordingly.
273
*
@@ -182,9 +293,17 @@
293
}
294
return fallbackValue;
295
}
296
+ function isRegex(value) {
297
+ try {
298
+ regExpTest(value, '');
299
+ return true;
300
+ } catch (_unused) {
301
+ return false;
302
+ }
303
+ }
304
186
- const html$1 = freeze(['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']);
187
- const svg$1 = freeze(['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']);
305
+ const html$1 = freeze(['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', 'search', 'section', 'select', 'shadow', 'slot', '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']);
306
+ const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
307
const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
308
// List of SVG elements that are disallowed by default.
309
// We still need to know them so that we can do namespace
@@ -197,15 +316,14 @@
316
const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
317
const text = freeze(['#text']);
318
200
- const html = freeze(['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', 'popover', 'popovertarget', 'popovertargetaction', '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', 'wrap', 'xmlns', 'slot']);
201
- const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', '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', 'exponent', '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', 'intercept', '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', 'slope', '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', 'tablevalues', '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']);
202
- const mathMl = freeze(['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']);
319
+ const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'command', 'commandfor', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', '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', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);
320
+ const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', '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', 'exponent', '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', 'intercept', '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', 'mask-type', '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', 'slope', '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', 'tablevalues', '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']);
321
+ const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', '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']);
322
const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
323
205
- // eslint-disable-next-line unicorn/better-regex
206
- const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
207
- const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
208
- const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
324
+ const MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g);
325
+ const ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g);
326
+ const TMPLIT_EXPR = seal(/\${[\w\W]*/g);
327
const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
328
const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
329
const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
@@ -216,38 +334,15 @@
334
const DOCTYPE_NAME = seal(/^html$/i);
335
const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
336
219
- var EXPRESSIONS = /*#__PURE__*/Object.freeze({
220
- __proto__: null,
221
- ARIA_ATTR: ARIA_ATTR,
222
- ATTR_WHITESPACE: ATTR_WHITESPACE,
223
- CUSTOM_ELEMENT: CUSTOM_ELEMENT,
224
- DATA_ATTR: DATA_ATTR,
225
- DOCTYPE_NAME: DOCTYPE_NAME,
226
- ERB_EXPR: ERB_EXPR,
227
- IS_ALLOWED_URI: IS_ALLOWED_URI,
228
- IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
229
- MUSTACHE_EXPR: MUSTACHE_EXPR,
230
- TMPLIT_EXPR: TMPLIT_EXPR
231
- });
232
-
337
/* eslint-disable @typescript-eslint/indent */
338
// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
339
const NODE_TYPE = {
340
element: 1,
237
- attribute: 2,
341
text: 3,
239
- cdataSection: 4,
240
- entityReference: 5,
241
- // Deprecated
242
- entityNode: 6,
342
// Deprecated
343
progressingInstruction: 7,
344
comment: 8,
246
- document: 9,
247
- documentType: 10,
248
- documentFragment: 11,
249
- notation: 12 // Deprecated
250
- };
345
+ document: 9};
346
const getGlobal = function getGlobal() {
347
return typeof window === 'undefined' ? null : window;
348
};
@@ -305,7 +400,7 @@
400
function createDOMPurify() {
401
let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
402
const DOMPurify = root => createDOMPurify(root);
308
- DOMPurify.version = '3.2.6';
403
+ DOMPurify.version = '3.4.5';
404
DOMPurify.removed = [];
405
if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
406
// Not running in a browser, provide a factory function
@@ -313,28 +408,26 @@
408
DOMPurify.isSupported = false;
409
return DOMPurify;
410
}
316
- let {
317
- document
318
- } = window;
411
+ let document = window.document;
412
const originalDocument = document;
413
const currentScript = originalDocument.currentScript;
321
- const {
322
- DocumentFragment,
323
- HTMLTemplateElement,
324
- Node,
325
- Element,
326
- NodeFilter,
327
- NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
328
- HTMLFormElement,
329
- DOMParser,
330
- trustedTypes
331
- } = window;
414
+ const DocumentFragment = window.DocumentFragment,
415
+ HTMLTemplateElement = window.HTMLTemplateElement,
416
+ Node = window.Node,
417
+ Element = window.Element,
418
+ NodeFilter = window.NodeFilter,
419
+ _window$NamedNodeMap = window.NamedNodeMap,
420
+ NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,
421
+ HTMLFormElement = window.HTMLFormElement,
422
+ DOMParser = window.DOMParser,
423
+ trustedTypes = window.trustedTypes;
424
const ElementPrototype = Element.prototype;
425
const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
426
const remove = lookupGetter(ElementPrototype, 'remove');
427
const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
428
const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
429
const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
430
+ const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;
431
// As per issue #47, the web-components registry is inherited by a
432
// new document created via createHTMLDocument. As per the spec
433
// (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
@@ -349,33 +442,26 @@
442
}
443
let trustedTypesPolicy;
444
let emptyHTML = '';
352
- const {
353
- implementation,
354
- createNodeIterator,
355
- createDocumentFragment,
356
- getElementsByTagName
357
- } = document;
358
- const {
359
- importNode
360
- } = originalDocument;
445
+ const _document = document,
446
+ implementation = _document.implementation,
447
+ createNodeIterator = _document.createNodeIterator,
448
+ createDocumentFragment = _document.createDocumentFragment,
449
+ getElementsByTagName = _document.getElementsByTagName;
450
+ const importNode = originalDocument.importNode;
451
let hooks = _createHooksMap();
452
/**
453
* Expose whether this browser supports running the full DOMPurify.
454
*/
455
DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
366
- const {
367
- MUSTACHE_EXPR,
368
- ERB_EXPR,
369
- TMPLIT_EXPR,
370
- DATA_ATTR,
371
- ARIA_ATTR,
372
- IS_SCRIPT_OR_DATA,
373
- ATTR_WHITESPACE,
374
- CUSTOM_ELEMENT
375
- } = EXPRESSIONS;
376
- let {
377
- IS_ALLOWED_URI: IS_ALLOWED_URI$1
378
- } = EXPRESSIONS;
456
+ const MUSTACHE_EXPR$1 = MUSTACHE_EXPR,
457
+ ERB_EXPR$1 = ERB_EXPR,
458
+ TMPLIT_EXPR$1 = TMPLIT_EXPR,
459
+ DATA_ATTR$1 = DATA_ATTR,
460
+ ARIA_ATTR$1 = ARIA_ATTR,
461
+ IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,
462
+ ATTR_WHITESPACE$1 = ATTR_WHITESPACE,
463
+ CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
464
+ let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
465
/**
466
* We consider the elements and attributes below to be safe. Ideally
467
* don't add any new ones but feel free to remove unwanted ones.
@@ -416,6 +502,21 @@
502
let FORBID_TAGS = null;
503
/* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
504
let FORBID_ATTR = null;
505
+ /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */
506
+ const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {
507
+ tagCheck: {
508
+ writable: true,
509
+ configurable: false,
510
+ enumerable: true,
511
+ value: null
512
+ },
513
+ attributeCheck: {
514
+ writable: true,
515
+ configurable: false,
516
+ enumerable: true,
517
+ value: null
518
+ }
519
+ }));
520
/* Decide if ARIA attributes are okay */
521
let ALLOW_ARIA_ATTR = true;
522
/* Decide if custom data attributes are okay */
@@ -538,15 +639,15 @@
639
// HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
640
transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
641
/* Set configuration parameters */
541
- ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
542
- ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
543
- ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
544
- URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
545
- DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
546
- FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
547
- FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
548
- FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
549
- USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;
642
+ ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') && arrayIsArray(cfg.ALLOWED_TAGS) ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
643
+ ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') && arrayIsArray(cfg.ALLOWED_ATTR) ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
644
+ ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') && arrayIsArray(cfg.ALLOWED_NAMESPACES) ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
645
+ URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') && arrayIsArray(cfg.ADD_URI_SAFE_ATTR) ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
646
+ DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') && arrayIsArray(cfg.ADD_DATA_URI_TAGS) ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
647
+ FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') && arrayIsArray(cfg.FORBID_CONTENTS) ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
648
+ FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') && arrayIsArray(cfg.FORBID_TAGS) ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
649
+ FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') && arrayIsArray(cfg.FORBID_ATTR) ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
650
+ USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object' ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;
651
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
652
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
653
ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
@@ -562,19 +663,20 @@
663
SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
664
KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
665
IN_PLACE = cfg.IN_PLACE || false; // Default false
565
- IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
566
- NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
567
- MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
568
- HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
569
- CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
570
- if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
571
- CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
666
+ IS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI; // Default regexp
667
+ NAMESPACE = typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace
668
+ MATHML_TEXT_INTEGRATION_POINTS = objectHasOwnProperty(cfg, 'MATHML_TEXT_INTEGRATION_POINTS') && cfg.MATHML_TEXT_INTEGRATION_POINTS && typeof cfg.MATHML_TEXT_INTEGRATION_POINTS === 'object' ? clone(cfg.MATHML_TEXT_INTEGRATION_POINTS) : addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); // Default built-in map
669
+ HTML_INTEGRATION_POINTS = objectHasOwnProperty(cfg, 'HTML_INTEGRATION_POINTS') && cfg.HTML_INTEGRATION_POINTS && typeof cfg.HTML_INTEGRATION_POINTS === 'object' ? clone(cfg.HTML_INTEGRATION_POINTS) : addToSet({}, ['annotation-xml']); // Default built-in map
670
+ const customElementHandling = objectHasOwnProperty(cfg, 'CUSTOM_ELEMENT_HANDLING') && cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING === 'object' ? clone(cfg.CUSTOM_ELEMENT_HANDLING) : create(null);
671
+ CUSTOM_ELEMENT_HANDLING = create(null);
672
+ if (objectHasOwnProperty(customElementHandling, 'tagNameCheck') && isRegexOrFunction(customElementHandling.tagNameCheck)) {
673
+ CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined
674
}
573
- if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
574
- CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
675
+ if (objectHasOwnProperty(customElementHandling, 'attributeNameCheck') && isRegexOrFunction(customElementHandling.attributeNameCheck)) {
676
+ CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck; // Default undefined
677
}
576
- if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
577
- CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
678
+ if (objectHasOwnProperty(customElementHandling, 'allowCustomizedBuiltInElements') && typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean') {
679
+ CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements; // Default undefined
680
}
681
if (SAFE_FOR_TEMPLATES) {
682
ALLOW_DATA_ATTR = false;
@@ -585,7 +687,7 @@
687
/* Parse profile info */
688
if (USE_PROFILES) {
689
ALLOWED_TAGS = addToSet({}, text);
588
- ALLOWED_ATTR = [];
690
+ ALLOWED_ATTR = create(null);
691
if (USE_PROFILES.html === true) {
692
addToSet(ALLOWED_TAGS, html$1);
693
addToSet(ALLOWED_ATTR, html);
@@ -606,28 +708,46 @@
708
addToSet(ALLOWED_ATTR, xml);
709
}
710
}
711
+ /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent
712
+ * leaking across calls when switching from function to array config */
713
+ EXTRA_ELEMENT_HANDLING.tagCheck = null;
714
+ EXTRA_ELEMENT_HANDLING.attributeCheck = null;
715
/* Merge configuration parameters */
610
- if (cfg.ADD_TAGS) {
611
- if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
612
- ALLOWED_TAGS = clone(ALLOWED_TAGS);
716
+ if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {
717
+ if (typeof cfg.ADD_TAGS === 'function') {
718
+ EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
719
+ } else if (arrayIsArray(cfg.ADD_TAGS)) {
720
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
721
+ ALLOWED_TAGS = clone(ALLOWED_TAGS);
722
+ }
723
+ addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
724
}
614
- addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
725
}
616
- if (cfg.ADD_ATTR) {
617
- if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
618
- ALLOWED_ATTR = clone(ALLOWED_ATTR);
726
+ if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {
727
+ if (typeof cfg.ADD_ATTR === 'function') {
728
+ EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
729
+ } else if (arrayIsArray(cfg.ADD_ATTR)) {
730
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
731
+ ALLOWED_ATTR = clone(ALLOWED_ATTR);
732
+ }
733
+ addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
734
}
620
- addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
735
}
622
- if (cfg.ADD_URI_SAFE_ATTR) {
736
+ if (objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') && arrayIsArray(cfg.ADD_URI_SAFE_ATTR)) {
737
addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
738
}
625
- if (cfg.FORBID_CONTENTS) {
739
+ if (objectHasOwnProperty(cfg, 'FORBID_CONTENTS') && arrayIsArray(cfg.FORBID_CONTENTS)) {
740
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
741
FORBID_CONTENTS = clone(FORBID_CONTENTS);
742
}
743
addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
744
}
745
+ if (objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {
746
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
747
+ FORBID_CONTENTS = clone(FORBID_CONTENTS);
748
+ }
749
+ addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
750
+ }
751
/* Add #text in case KEEP_CONTENT is set to true */
752
if (KEEP_CONTENT) {
753
ALLOWED_TAGS['#text'] = true;
@@ -861,6 +981,40 @@
981
// eslint-disable-next-line no-bitwise
982
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
983
};
984
+ /**
985
+ * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the
986
+ * character data of an element subtree. Used as the final safety net for
987
+ * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions
988
+ * which only form after text-node normalization (e.g. fragments split across
989
+ * stripped elements) cannot survive into a template-evaluating framework.
990
+ *
991
+ * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`
992
+ * in place rather than round-tripping through innerHTML. This preserves
993
+ * descendant node references (important for IN_PLACE callers), avoids a
994
+ * serialize/reparse cycle, and reads literal character data — which means
995
+ * `<%...%>` in text content matches the ERB regex against its real bytes
996
+ * instead of the HTML-entity-escaped form innerHTML would produce.
997
+ *
998
+ * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for
999
+ * attributes is performed during the per-node `_sanitizeAttributes` pass.
1000
+ *
1001
+ * @param node The root element whose character data should be scrubbed.
1002
+ */
1003
+ const _scrubTemplateExpressions = function _scrubTemplateExpressions(node) {
1004
+ node.normalize();
1005
+ const walker = createNodeIterator.call(node.ownerDocument || node, node,
1006
+ // eslint-disable-next-line no-bitwise
1007
+ NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
1008
+ let currentNode = walker.nextNode();
1009
+ while (currentNode) {
1010
+ let data = currentNode.data;
1011
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1012
+ data = stringReplace(data, expr, ' ');
1013
+ });
1014
+ currentNode.data = data;
1015
+ currentNode = walker.nextNode();
1016
+ }
1017
+ };
1018
/**
1019
* _isClobbered
1020
*
@@ -871,13 +1025,31 @@
1025
return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
1026
};
1027
/**
874
- * Checks whether the given object is a DOM node.
1028
+ * Checks whether the given object is a DOM node, including nodes that
1029
+ * originate from a different window/realm (e.g. an iframe's
1030
+ * contentDocument). The previous `value instanceof Node` check was
1031
+ * realm-bound: nodes from a different window failed it, causing
1032
+ * sanitize() to silently stringify them and reset IN_PLACE to false,
1033
+ * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.
1034
+ *
1035
+ * Implementation: call the cached `nodeType` getter from Node.prototype
1036
+ * directly on the value. This bypasses any clobbered instance property
1037
+ * (e.g. a child element named "nodeType") and works across realms
1038
+ * because the WebIDL `nodeType` getter reads an internal slot that
1039
+ * every real Node has, regardless of which window minted it.
1040
*
1041
* @param value object to check whether it's a DOM node
877
- * @return true is object is a DOM node
1042
+ * @return true if value is a DOM node from any realm
1043
*/
1044
const _isNode = function _isNode(value) {
880
- return typeof Node === 'function' && value instanceof Node;
1045
+ if (!getNodeType || typeof value !== 'object' || value === null) {
1046
+ return false;
1047
+ }
1048
+ try {
1049
+ return typeof getNodeType(value) === 'number';
1050
+ } catch (_) {
1051
+ return false;
1052
+ }
1053
};
1054
function _executeHooks(hooks, currentNode, data) {
1055
arrayForEach(hooks, hook => {
@@ -914,6 +1086,11 @@
1086
_forceRemove(currentNode);
1087
return true;
1088
}
1089
+ /* Remove risky CSS construction leading to mXSS */
1090
+ if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && tagName === 'style' && _isNode(currentNode.firstElementChild)) {
1091
+ _forceRemove(currentNode);
1092
+ return true;
1093
+ }
1094
/* Remove any occurrence of processing instructions */
1095
if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
1096
_forceRemove(currentNode);
@@ -925,7 +1102,7 @@
1102
return true;
1103
}
1104
/* Remove element if anything forbids its presence */
928
- if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
1105
+ if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {
1106
/* Check if we have a custom element to handle */
1107
if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
1108
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
@@ -943,7 +1120,6 @@
1120
const childCount = childNodes.length;
1121
for (let i = childCount - 1; i >= 0; --i) {
1122
const childClone = cloneNode(childNodes[i], true);
946
- childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
1123
parentNode.insertBefore(childClone, getNextSibling(currentNode));
1124
}
1125
}
@@ -965,7 +1141,7 @@
1141
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
1142
/* Get the element's text content */
1143
content = currentNode.textContent;
968
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
1144
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1145
content = stringReplace(content, expr, ' ');
1146
});
1147
if (currentNode.textContent !== content) {
@@ -989,31 +1165,40 @@
1165
*/
1166
// eslint-disable-next-line complexity
1167
const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
1168
+ /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */
1169
+ if (FORBID_ATTR[lcName]) {
1170
+ return false;
1171
+ }
1172
/* Make sure attribute cannot clobber */
1173
if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
1174
return false;
1175
}
1176
+ const nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);
1177
/* Allow valid data-* attributes: At least one character after "-"
1178
(https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
1179
XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
1180
We don't need to check the value; it's always URI safe. */
1000
- if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
1181
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!nameIsPermitted || FORBID_ATTR[lcName]) {
1182
if (
1183
// First condition does a very basic check if a) it's basically a valid custom element tagname AND
1184
// b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
1185
// and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
1005
- _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||
1186
+ _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||
1187
// Alternative, second condition checks if it's an `is`-attribute, AND
1188
// the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
1189
lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
1190
return false;
1191
}
1192
/* Check value is safe. First, is attr inert? If so, is safe */
1012
- } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
1193
+ } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (value) {
1194
return false;
1195
} else ;
1196
return true;
1197
};
1198
+ /* Names the HTML spec reserves from valid-custom-element-name; these must
1199
+ * never be treated as basic custom elements even when a permissive
1200
+ * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */
1201
+ const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, ['annotation-xml', 'color-profile', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'missing-glyph']);
1202
/**
1203
* _isBasicCustomElement
1204
* checks if at least one dash is included in tagName, and it's not the first char
@@ -1023,7 +1208,7 @@
1208
* @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
1209
*/
1210
const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
1026
- return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);
1211
+ return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);
1212
};
1213
/**
1214
* _sanitizeAttributes
@@ -1038,9 +1223,7 @@
1223
const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
1224
/* Execute a hook if present */
1225
_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
1041
- const {
1042
- attributes
1043
- } = currentNode;
1226
+ const attributes = currentNode.attributes;
1227
/* Check if we have attributes; if not we might have a text node */
1228
if (!attributes || _isClobbered(currentNode)) {
1229
return;
@@ -1056,11 +1239,9 @@
1239
/* Go backwards over all attributes; safely remove bad ones */
1240
while (l--) {
1241
const attr = attributes[l];
1059
- const {
1060
- name,
1061
- namespaceURI,
1062
- value: attrValue
1063
- } = attr;
1242
+ const name = attr.name,
1243
+ namespaceURI = attr.namespaceURI,
1244
+ attrValue = attr.value;
1245
const lcName = transformCaseFunc(name);
1246
const initValue = attrValue;
1247
let value = name === 'value' ? initValue : stringTrim(initValue);
@@ -1074,14 +1255,21 @@
1255
/* Full DOM Clobbering protection via namespace isolation,
1256
* Prefix id and name attributes with `user-content-`
1257
*/
1077
- if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
1258
+ if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name') && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {
1259
// Remove the attribute with this value
1260
_removeAttribute(name, currentNode);
1261
// Prefix the value and later re-create the attribute with the sanitized value
1262
value = SANITIZE_NAMED_PROPS_PREFIX + value;
1263
}
1264
+ // Else: already prefixed, leave the attribute alone — the prefix is
1265
+ // itself the clobbering protection, and re-applying it is incorrect.
1266
/* Work around a security issue with comments inside attributes */
1084
- if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
1267
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
1268
+ _removeAttribute(name, currentNode);
1269
+ continue;
1270
+ }
1271
+ /* Make sure we cannot easily use animated hrefs, even if animations are allowed */
1272
+ if (lcName === 'attributename' && stringMatch(value, 'href')) {
1273
_removeAttribute(name, currentNode);
1274
continue;
1275
}
@@ -1101,7 +1289,7 @@
1289
}
1290
/* Sanitize attribute content to be template-safe */
1291
if (SAFE_FOR_TEMPLATES) {
1104
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
1292
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1293
value = stringReplace(value, expr, ' ');
1294
});
1295
}
@@ -1155,7 +1343,7 @@
1343
*
1344
* @param fragment to iterate over recursively
1345
*/
1158
- const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
1346
+ const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {
1347
let shadowNode = null;
1348
const shadowIterator = _createNodeIterator(fragment);
1349
/* Execute a hook if present */
@@ -1169,12 +1357,55 @@
1357
_sanitizeAttributes(shadowNode);
1358
/* Deep shadow DOM detected */
1359
if (shadowNode.content instanceof DocumentFragment) {
1172
- _sanitizeShadowDOM(shadowNode.content);
1360
+ _sanitizeShadowDOM2(shadowNode.content);
1361
}
1362
}
1363
/* Execute a hook if present */
1364
_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
1365
};
1366
+ /**
1367
+ * _sanitizeAttachedShadowRoots
1368
+ *
1369
+ * Walks `root` and feeds every attached shadow root we encounter into
1370
+ * the existing _sanitizeShadowDOM pipeline. The default node iterator
1371
+ * does not descend into shadow trees, so nodes inside an attached
1372
+ * shadow root would otherwise be skipped entirely.
1373
+ *
1374
+ * Two real input paths put attached shadow roots in front of us:
1375
+ * 1. IN_PLACE on a DOM node that already has shadow roots attached.
1376
+ * 2. DOM-node input where importNode(dirty, true) deep-clones the
1377
+ * shadow root because it was created with `clonable: true`.
1378
+ *
1379
+ * This pass runs once, up front, so the main iteration loop (and the
1380
+ * existing _sanitizeShadowDOM template-content recursion) stay
1381
+ * untouched — string-input paths are not affected.
1382
+ *
1383
+ * @param root the subtree root to walk for attached shadow roots
1384
+ */
1385
+ const _sanitizeAttachedShadowRoots2 = function _sanitizeAttachedShadowRoots(root) {
1386
+ if (root.nodeType === NODE_TYPE.element && root.shadowRoot instanceof DocumentFragment) {
1387
+ const sr = root.shadowRoot;
1388
+ // Recurse first so that nested shadow roots are reached even if
1389
+ // _sanitizeShadowDOM removes hosts at this level.
1390
+ _sanitizeAttachedShadowRoots2(sr);
1391
+ _sanitizeShadowDOM2(sr);
1392
+ }
1393
+ // Snapshot children before recursing. Sanitization of one subtree
1394
+ // (e.g. via an uponSanitizeShadowNode hook) may detach siblings,
1395
+ // and naive nextSibling traversal would silently skip the rest of
1396
+ // the list once a node is detached.
1397
+ const childNodes = root.childNodes;
1398
+ if (!childNodes) {
1399
+ return;
1400
+ }
1401
+ const snapshot = [];
1402
+ arrayForEach(childNodes, child => {
1403
+ arrayPush(snapshot, child);
1404
+ });
1405
+ for (const child of snapshot) {
1406
+ _sanitizeAttachedShadowRoots2(child);
1407
+ }
1408
+ };
1409
// eslint-disable-next-line complexity
1410
DOMPurify.sanitize = function (dirty) {
1411
let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -1191,13 +1422,9 @@
1422
}
1423
/* Stringify, in case dirty is an object */
1424
if (typeof dirty !== 'string' && !_isNode(dirty)) {
1194
- if (typeof dirty.toString === 'function') {
1195
- dirty = dirty.toString();
1196
- if (typeof dirty !== 'string') {
1197
- throw typeErrorCreate('dirty is not a string, aborting');
1198
- }
1199
- } else {
1200
- throw typeErrorCreate('toString is not a function');
1425
+ dirty = stringifyValue(dirty);
1426
+ if (typeof dirty !== 'string') {
1427
+ throw typeErrorCreate('dirty is not a string, aborting');
1428
}
1429
}
1430
/* Return dirty HTML if DOMPurify cannot run */
@@ -1216,13 +1443,17 @@
1443
}
1444
if (IN_PLACE) {
1445
/* Do some early pre-sanitization to avoid unsafe root nodes */
1219
- if (dirty.nodeName) {
1220
- const tagName = transformCaseFunc(dirty.nodeName);
1446
+ const nn = dirty.nodeName;
1447
+ if (typeof nn === 'string') {
1448
+ const tagName = transformCaseFunc(nn);
1449
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
1450
throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
1451
}
1452
}
1225
- } else if (dirty instanceof Node) {
1453
+ /* Sanitize attached shadow roots before the main iterator runs.
1454
+ The iterator does not descend into shadow trees. */
1455
+ _sanitizeAttachedShadowRoots2(dirty);
1456
+ } else if (_isNode(dirty)) {
1457
/* If dirty is a DOM element, append to an empty document to avoid
1458
elements being stripped by the parser */
1459
body = _initDocument('<!---->');
@@ -1236,6 +1467,10 @@
1467
// eslint-disable-next-line unicorn/prefer-dom-node-append
1468
body.appendChild(importedNode);
1469
}
1470
+ /* Clonable shadow roots are deep-cloned by importNode(); sanitize
1471
+ them before the main iterator runs, since the iterator does not
1472
+ descend into shadow trees. */
1473
+ _sanitizeAttachedShadowRoots2(importedNode);
1474
} else {
1475
/* Exit directly if we have nothing to do */
1476
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
@@ -1264,15 +1499,21 @@
1499
_sanitizeAttributes(currentNode);
1500
/* Shadow DOM detected, sanitize it */
1501
if (currentNode.content instanceof DocumentFragment) {
1267
- _sanitizeShadowDOM(currentNode.content);
1502
+ _sanitizeShadowDOM2(currentNode.content);
1503
}
1504
}
1505
/* If we sanitized `dirty` in-place, return it. */
1506
if (IN_PLACE) {
1507
+ if (SAFE_FOR_TEMPLATES) {
1508
+ _scrubTemplateExpressions(dirty);
1509
+ }
1510
return dirty;
1511
}
1512
/* Return sanitized string or DOM */
1513
if (RETURN_DOM) {
1514
+ if (SAFE_FOR_TEMPLATES) {
1515
+ _scrubTemplateExpressions(body);
1516
+ }
1517
if (RETURN_DOM_FRAGMENT) {
1518
returnNode = createDocumentFragment.call(body.ownerDocument);
1519
while (body.firstChild) {
@@ -1301,7 +1542,7 @@
1542
}
1543
/* Sanitize final string template-safe */
1544
if (SAFE_FOR_TEMPLATES) {
1304
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
1545
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
1546
serializedHTML = stringReplace(serializedHTML, expr, ' ');
1547
});
1548
}
public/scripts/purify.js.map
+1
-1
@@ -1 +1 @@
1
-{"version":3,"file":"purify.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":["const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(func: (...args: any[]) => T): (...args: any[]) => T {\n return (...args: any[]): T => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record<string, any>,\n array: readonly any[],\n transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, any> {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as any[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n object: T,\n prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n 'slot',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","/* eslint-disable @typescript-eslint/indent */\n\nimport type { TrustedHTML, TrustedTypesWindow } from 'trusted-types/lib';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES\n : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS =\n cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS =\n cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n dirty +\n '</body></html>';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n return (\n element instanceof HTMLFormElement &&\n (typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n !(element.attributes instanceof NamedNodeMap) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function (value: unknown): value is Node {\n return typeof Node === 'function' && value instanceof Node;\n };\n\n function _executeHooks<\n T extends\n | NodeHook\n | ElementHook\n | DocumentFragmentHook\n | UponSanitizeElementHook\n | UponSanitizeAttributeHook\n >(hooks: T[], currentNode: Parameters<T>[0], data: Parameters<T>[1]): void {\n arrayForEach(hooks, (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if ((dirty as Node).nodeName) {\n const tagName = transformCaseFunc((dirty as Node).nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array<RemovedElement | RemovedAttribute>;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record<string, boolean>;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record<string, boolean>;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick<TrustedTypesWindow, 'trustedTypes'>;\n"],"names":["entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","Object","freeze","seal","create","apply","construct","Reflect","x","fun","thisValue","args","Func","arrayForEach","unapply","Array","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","objectHasOwnProperty","hasOwnProperty","regExpTest","RegExp","test","typeErrorCreate","unconstruct","TypeError","func","thisArg","lastIndex","_len","arguments","length","_key","_len2","_key2","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","isPropertyExist","clone","object","newObject","property","value","isArray","constructor","lookupGetter","prop","desc","get","fallbackValue","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","NODE_TYPE","attribute","cdataSection","entityReference","entityNode","progressingInstruction","comment","document","documentType","documentFragment","notation","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","_","console","warn","_createHooksMap","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","TRUSTED_TYPES_POLICY","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","namespaceURI","parentTagName","Boolean","_forceRemove","node","removeChild","_removeAttribute","name","getAttributeNode","from","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","nodeName","textContent","attributes","hasChildNodes","_isNode","_executeHooks","currentNode","data","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","parentNode","childCount","i","childClone","__removalCount","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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"}
\ No newline at end of file
1
+{"version":3,"file":"purify.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":[null,null,null,null,null],"names":["entries","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","Symbol","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","unconstruct","TypeError","lastIndex","_len3","_key3","_len4","_key4","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","isPropertyExist","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","value","constructor","stringifyValue","valueAsRecord","valueToString","lookupGetter","stringified","prop","desc","get","fallbackValue","isRegex","_unused","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","NODE_TYPE","attribute","cdataSection","progressingInstruction","comment","document","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","_","console","warn","_createHooksMap","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","getNodeType","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","namespaceURI","parentTagName","_forceRemove","node","removeChild","_removeAttribute","name","getAttributeNode","from","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_scrubTemplateExpressions","normalize","walker","currentNode","nextNode","data","expr","_isClobbered","nodeName","textContent","attributes","hasChildNodes","_isNode","_executeHooks","hook","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","parentNode","childCount","i","childClone","_isValidAttribute","lcTag","lcName","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","_sanitizeAttachedShadowRoots","shadowRoot","sr","snapshot","child","sanitize","importedNode","returnNode","nn","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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"}
\ No newline at end of file
public/scripts/purify.min.js.map
+1
-1
@@ -1 +1 @@
1
-{"version":3,"file":"purify.min.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":["const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(func: (...args: any[]) => T): (...args: any[]) => T {\n return (...args: any[]): T => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record<string, any>,\n array: readonly any[],\n transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, any> {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as any[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n object: T,\n prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n 'slot',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","/* eslint-disable @typescript-eslint/indent */\n\nimport type { TrustedHTML, TrustedTypesWindow } from 'trusted-types/lib';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES\n : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS =\n cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS =\n cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n dirty +\n '</body></html>';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n return (\n element instanceof HTMLFormElement &&\n (typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n !(element.attributes instanceof NamedNodeMap) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function (value: unknown): value is Node {\n return typeof Node === 'function' && value instanceof Node;\n };\n\n function _executeHooks<\n T extends\n | NodeHook\n | ElementHook\n | DocumentFragmentHook\n | UponSanitizeElementHook\n | UponSanitizeAttributeHook\n >(hooks: T[], currentNode: Parameters<T>[0], data: Parameters<T>[1]): void {\n arrayForEach(hooks, (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if ((dirty as Node).nodeName) {\n const tagName = transformCaseFunc((dirty as Node).nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array<RemovedElement | RemovedAttribute>;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record<string, boolean>;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record<string, boolean>;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick<TrustedTypesWindow, 'trustedTypes'>;\n"],"names":["entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","Object","freeze","seal","create","apply","construct","Reflect","x","fun","thisValue","args","Func","arrayForEach","unapply","Array","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","objectHasOwnProperty","hasOwnProperty","regExpTest","RegExp","test","typeErrorCreate","func","TypeError","_len2","arguments","length","_key2","thisArg","lastIndex","_len","_key","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","property","value","isArray","constructor","lookupGetter","prop","desc","get","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","NODE_TYPE","getGlobal","window","purify","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","document","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","scriptUrl","_","console","warn","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","removeChild","_removeAttribute","name","attribute","getAttributeNode","from","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","nodeName","textContent","attributes","namespaceURI","hasChildNodes","_isNode","_executeHooks","currentNode","data","hook","_sanitizeElements","tagName","allowedTags","firstElementChild","_isBasicCustomElement","parentNode","i","childClone","__removalCount","parent","parentTagName","Boolean","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGW0E,EAAM1E,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGW2E,EAAa3E,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOW4E,EAAgB5E,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW6E,EAAS7E,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW8E,EAAmB9E,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW+E,EAAO/E,EAAO,CAAC,UCpRfyE,EAAOzE,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,SAGW0E,EAAM1E,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGW6E,EAAS7E,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGWgF,EAAMhF,EAAO,CACxB,aACA,SACA,cACA,YACA,gBC9WWiF,EAAgBhF,EAAK,6BACrBiF,EAAWjF,EAAK,yBAChBkF,EAAclF,EAAK,iBACnBmF,EAAYnF,EAAK,gCACjBoF,EAAYpF,EAAK,kBACjBqF,EAAiBrF,EAC5B,oGAEWsF,EAAoBtF,EAAK,yBACzBuF,EAAkBvF,EAC7B,+DAEWwF,EAAexF,EAAK,WACpByF,EAAiBzF,EAAK,0NCmBnC,MAAM0F,EACK,EADLA,EAGE,EAHFA,GAOoB,EAPpBA,GAQK,EARLA,GASM,EAMNC,GAAY,WAChB,MAAyB,oBAAXC,OAAyB,KAAOA,MAChD,EAilDA,IAAAC,GA/gDA,SAASC,IAAgD,IAAhCF,EAAqB/C,UAAAC,OAAAD,QAAAkD,IAAAlD,UAAAkD,GAAAlD,UAAA8C,GAAAA,KAC5C,MAAMK,EAAwBC,GAAqBH,EAAgBG,GAMnE,GAJAD,EAAUE,QAAUC,QAEpBH,EAAUI,QAAU,IAGjBR,IAC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"}
\ No newline at end of file
1
+{"version":3,"file":"purify.min.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":[null,null,null,null,null],"names":["entries","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","Symbol","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","TypeError","_len4","_key4","lastIndex","_len3","_key3","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","value","constructor","lookupGetter","prop","desc","get","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","NODE_TYPE","getGlobal","window","purify","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","document","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","getNodeType","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","_unused","isRegex","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","scriptUrl","_","console","warn","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","removeChild","_removeAttribute","name","attribute","getAttributeNode","from","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_scrubTemplateExpressions","normalize","walker","currentNode","nextNode","data","expr","_isClobbered","nodeName","textContent","attributes","namespaceURI","hasChildNodes","_isNode","_executeHooks","hook","_sanitizeElements","tagName","allowedTags","firstElementChild","_isBasicCustomElement","parentNode","i","childClone","parent","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","lcName","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","_sanitizeAttachedShadowRoots","shadowRoot","sr","snapshot","child","sanitize","importedNode","returnNode","valueAsRecord","valueToString","stringified","stringifyValue","nn","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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AEjCA,GACiB,iBAAVA,GACPA,EAAMC,cAAgBzF,OAEtBmF,EAAUI,GAAYN,EAAMO,GAE5BL,EAAUI,GAAYC,EAG5B,CAEA,OAAOL,CACT,CAmEA,SAASO,EACPR,EACAS,GAEA,KAAkB,OAAXT,GAAiB,CACtB,MAAMU,EAAOxF,EAAyB8E,EAAQS,GAE9C,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOpE,EAAQmE,EAAKC,KAGtB,GAA0B,mBAAfD,EAAKJ,MACd,OAAO/D,EAAQmE,EAAKJ,MAExB,CAEAN,EAAS/E,EAAe+E,EAC1B,CAMA,OAJA,WACE,OAAO,IACT,CAGF,CC1RO,MAAMY,EAAOzF,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGW0F,EAAM1F,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGW2F,EAAa3F,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOW4F,EAAgB5F,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW6F,EAAS7F,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW8F,EAAmB9F,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW+F,EAAO/F,EAAO,CAAC,UC1RfyF,EAAOzF,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,UAGW0F,EAAM1F,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGW6F,EAAS7F,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,Y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"}
\ No newline at end of file