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