url-sanitizer
Advanced tools
Comparing version 2.0.0 to 2.0.1
@@ -1,2 +0,2 @@ | ||
var{DOMPurify:N}=globalThis;var H=/^[\w+/=-]+$/;var S=/data:[\w#&+./;=-]*,/,D=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,q=/data:[\w#&+./;=-]*,[^"]+/g,X=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,Y=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var Q=/^[a-z][\da-z+.-]*$/,J=/^(?:ext|web)\+[a-z]+$/,j=/(?:java|vb)script/,A=/(?:java|vb)script|blob/,M=/%(?:2[27]|3[CE])|[<>"']/,K=/^%[\dA-F]{2}$/i;var g=t=>Object.prototype.toString.call(t).slice(8,-1),d=t=>typeof t=="string"||t instanceof String;var{FileReader:V}=globalThis;var L=[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 C=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","brid","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","dhttp","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","lid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","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-launchremotedesktop","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","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","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","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","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"];var W=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(16).toUpperCase()}`);return e.join("")},Z=t=>{d(t)&&K.test(t)&&(t=t.toUpperCase());let[e,s,r,i,o,a]=["&","#","<",">",'"',"'"].map(W),c;return t===e?c=`${e}amp;`:t===r?c=`${e}lt;`:t===i?c=`${e}gt;`:t===o?c=`${e}quot;`:t===a?c=`${e}${s}39;`:c=t,c},ee=t=>{if(d(t)){if(!H.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(o=>o.charCodeAt(0))),r=new Set(L),i;return s.every(o=>r.has(o))?i=e.replace(/\s/g,W):i=t,i},P=(t,e=0)=>{if(!d(t))throw new TypeError(`Expected String but got ${g(t)}.`);if(Number.isInteger(e)){if(e>16)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 r=new Set(L),i=[...s.matchAll(X)].reverse();for(let o of i){let[a,c]=o,l;if(/^x[\dA-F]+/i.test(c)?l=parseInt(`0${c}`,16):/^\d+/.test(c)&&(l=parseInt(c)),Number.isInteger(l)){let{index:u}=o,[p,n]=[s.substring(0,u),s.substring(u+a.length)];r.has(l)?(s=`${p}${String.fromCharCode(l)}${n}`,(/#x?$/.test(p)||/^#(?:x(?:00)?[2-7]|\d)/.test(n))&&(s=P(s,++e))):l<16*16&&(s=`${p}${n}`)}}}return s},te=t=>new Promise((e,s)=>{let r=new V;r.addEventListener("error",()=>s(r.error)),r.addEventListener("abort",()=>e(r.result)),r.addEventListener("load",()=>e(r.result)),r.readAsDataURL(t)}),k=class{#e;constructor(){this.#e=new Set(C)}get(){return[...this.#e]}has(e){return this.#e.has(e)}add(e){if(d(e)){if(j.test(e)||!Q.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:r}=new URL(e),i=r.replace(/:$/,""),o=i.split("+");s=!j.test(i)&&J.test(i)||o.every(a=>this.#e.has(a))}catch{s=!1}return!!s}reset(){this.#e.clear();for(let e of C)this.#e.add(e)}};var O=class extends k{#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(S.test(s)){let i=[...s.matchAll(q)].reverse();for(let o of i){let[a]=o;D.test(a)&&([a]=D.exec(a)),this.#e++,this.#t.add(a);let c=this.sanitize(a,{allow:["data"]}),{index:l}=o,[u,p]=[s.substring(0,l),s.substring(l+a.length)];c?s=`${u}${c}${p}`:s=`${u}${p}`}}return s}purify(e){if(!d(e))throw new TypeError(`Expected String but got ${g(e)}.`);let s=N.sanitize(decodeURIComponent(e));return s&&S.test(s)&&(s=this.replace(s)),s=s.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(s)}sanitize(e,s){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:i,only:o}=s??{},a=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),c=new Set,l=!1;if(Array.isArray(o)&&o.length){let p=super.get();for(let m of p)a.set(m,!1);let n=Object.values(o);for(let m of n)if(d(m)&&(m=m.trim(),!A.test(m))){if(super.has(m))a.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(a.set(m,!0),c.add(m))}!l&&a.has(m)&&(l=a.get(m))}}else{if(Array.isArray(r)&&r.length){let p=Object.values(r);for(let n of p)if(d(n)&&(n=n.trim(),!A.test(n)))if(super.has(n))a.set(n,!0);else{try{super.add(n)}catch{}super.has(n)&&(a.set(n,!0),c.add(n))}}if(Array.isArray(i)&&i.length){let p=Object.values(i);for(let n of p)d(n)&&(n=n.trim(),n&&a.set(n,!1))}}let u;if(super.verify(e)){let{hash:p,href:n,pathname:m,protocol:U,search:w}=new URL(e),E=U.replace(/:$/,""),G=E.split("+"),_;if(l)_=G.every(y=>a.get(y));else for(let[y,R]of a.entries())if(_=R||E!==y&&G.every(f=>f!==y),!_)break;if(_){let y=G.includes("data"),R,f=n;if(y){let[v,...z]=m.split(","),$=`${z.join(",")}${w}${p}`,T=v.split(";"),I=T[T.length-1]==="base64",h=$;I&&(h=ee($));try{let F=P(h).trim(),{protocol:se}=new URL(F);se.replace(/:$/,"").split("+").some(re=>A.test(re))&&(f="")}catch{}let B=S.test(h);h!==$||B?B?h=this.replace(h):this.#t.has(e)?this.#t.delete(e):R=!0:this.#t.has(e)?this.#t.delete(e):R=!0,(!v||Y.test(v))&&(h=this.purify(h)),f&&h?(I&&h!==$&&T.pop(),f=`${E}:${T.join(";")},${h}`):f=""}else R=!0;if(!y&&M.test(f)){let v=M.exec(f),{index:z}=v;f=f.substring(0,z).replace(/[?&]$/,"")}f?(u=f.replace(/%26/g,Z),R&&(this.#e=0)):this.#e=0}c.size&&c.forEach(y=>{super.remove(y)})}return u||null}parse(e,s){if(!d(e))throw new TypeError(`Expected String but got ${g(e)}.`);let r=new Map([["input",e]]),i;if(this.verify(e)){let{protocol:o}=new URL(e);o==="blob:"?i=e:i=this.sanitize(e,s??{allow:["data","file"]})}if(i){let o=new URL(i),{pathname:a,protocol:c}=o,u=c.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),u){let p=new Map,[n,...m]=a.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),r.set("data",Object.fromEntries(p))}else r.set("data",null);for(let p in o){let n=o[p];d(n)&&r.set(p,n)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}},b=new O,ce=async(t,e={allow:[],deny:[],only:[]})=>{let s;if(t&&d(t)){let r;try{let{protocol:i}=new URL(t);r=i.replace(/:$/,"")}catch{}if(r==="blob"){let{allow:i,deny:o,only:a}=e;if(Array.isArray(i)&&i.includes("blob")&&!(Array.isArray(o)&&o.includes("blob"))||Array.isArray(a)&&a.includes("blob")){let c;try{c=await fetch(t).then(l=>l.blob()).then(te)}catch{}if(c){if(Array.isArray(a))a.includes("data")||a.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=b.sanitize(c,e)}}URL.revokeObjectURL(t)}else r&&(s=b.sanitize(t,e))}return s||null},pe=(t,e)=>{let s;if(t&&d(t)){let r;try{let{protocol:i}=new URL(t);r=i.replace(/:$/,"")}catch{}r==="blob"?URL.revokeObjectURL(t):r&&(s=b.sanitize(t,e))}return s||null},le=async t=>b.parse(t),me=t=>b.parse(t),de=async t=>b.verify(t),fe=t=>b.verify(t),he=b;export{he as default,de as isURI,fe as isURISync,le as parseURL,me as parseURLSync,ce as sanitizeURL,pe as sanitizeURLSync}; | ||
var{DOMPurify:N}=globalThis;var H=/^[\w+/=-]+$/;var S=/data:[\w#&+./;=-]*,/,D=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,q=/data:[\w#&+./;=-]*,[^"]+/g,X=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,Y=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var Q=/^[a-z][\da-z+.-]*$/,J=/^(?:ext|web)\+[a-z]+$/,j=/(?:java|vb)script/,A=/(?:java|vb)script|blob/,M=/%(?:2[27]|3[CE])|[<>"']/,K=/^%[\dA-F]{2}$/i;var g=t=>Object.prototype.toString.call(t).slice(8,-1),d=t=>typeof t=="string"||t instanceof String;var{FileReader:V}=globalThis;var L=[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 C=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","brid","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","dhttp","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","hs20","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","lid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","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-launchremotedesktop","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-recall","ms-remotedesktop","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","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","openpgp4fpr","otpauth","palm","paparazzi","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","thzp","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","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"];var W=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(16).toUpperCase()}`);return e.join("")},Z=t=>{d(t)&&K.test(t)&&(t=t.toUpperCase());let[e,s,r,i,o,a]=["&","#","<",">",'"',"'"].map(W),c;return t===e?c=`${e}amp;`:t===r?c=`${e}lt;`:t===i?c=`${e}gt;`:t===o?c=`${e}quot;`:t===a?c=`${e}${s}39;`:c=t,c},ee=t=>{if(d(t)){if(!H.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(o=>o.charCodeAt(0))),r=new Set(L),i;return s.every(o=>r.has(o))?i=e.replace(/\s/g,W):i=t,i},P=(t,e=0)=>{if(!d(t))throw new TypeError(`Expected String but got ${g(t)}.`);if(Number.isInteger(e)){if(e>16)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 r=new Set(L),i=[...s.matchAll(X)].reverse();for(let o of i){let[a,c]=o,l;if(/^x[\dA-F]+/i.test(c)?l=parseInt(`0${c}`,16):/^\d+/.test(c)&&(l=parseInt(c)),Number.isInteger(l)){let{index:u}=o,[p,n]=[s.substring(0,u),s.substring(u+a.length)];r.has(l)?(s=`${p}${String.fromCharCode(l)}${n}`,(/#x?$/.test(p)||/^#(?:x(?:00)?[2-7]|\d)/.test(n))&&(s=P(s,++e))):l<16*16&&(s=`${p}${n}`)}}}return s},te=t=>new Promise((e,s)=>{let r=new V;r.addEventListener("error",()=>s(r.error)),r.addEventListener("abort",()=>e(r.result)),r.addEventListener("load",()=>e(r.result)),r.readAsDataURL(t)}),k=class{#e;constructor(){this.#e=new Set(C)}get(){return[...this.#e]}has(e){return this.#e.has(e)}add(e){if(d(e)){if(j.test(e)||!Q.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:r}=new URL(e),i=r.replace(/:$/,""),o=i.split("+");s=!j.test(i)&&J.test(i)||o.every(a=>this.#e.has(a))}catch{s=!1}return!!s}reset(){this.#e.clear();for(let e of C)this.#e.add(e)}};var O=class extends k{#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(S.test(s)){let i=[...s.matchAll(q)].reverse();for(let o of i){let[a]=o;D.test(a)&&([a]=D.exec(a)),this.#e++,this.#t.add(a);let c=this.sanitize(a,{allow:["data"]}),{index:l}=o,[u,p]=[s.substring(0,l),s.substring(l+a.length)];c?s=`${u}${c}${p}`:s=`${u}${p}`}}return s}purify(e){if(!d(e))throw new TypeError(`Expected String but got ${g(e)}.`);let s=N.sanitize(decodeURIComponent(e));return s&&S.test(s)&&(s=this.replace(s)),s=s.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(s)}sanitize(e,s){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:i,only:o}=s??{},a=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),c=new Set,l=!1;if(Array.isArray(o)&&o.length){let p=super.get();for(let m of p)a.set(m,!1);let n=Object.values(o);for(let m of n)if(d(m)&&(m=m.trim(),!A.test(m))){if(super.has(m))a.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(a.set(m,!0),c.add(m))}!l&&a.has(m)&&(l=a.get(m))}}else{if(Array.isArray(r)&&r.length){let p=Object.values(r);for(let n of p)if(d(n)&&(n=n.trim(),!A.test(n)))if(super.has(n))a.set(n,!0);else{try{super.add(n)}catch{}super.has(n)&&(a.set(n,!0),c.add(n))}}if(Array.isArray(i)&&i.length){let p=Object.values(i);for(let n of p)d(n)&&(n=n.trim(),n&&a.set(n,!1))}}let u;if(super.verify(e)){let{hash:p,href:n,pathname:m,protocol:U,search:w}=new URL(e),E=U.replace(/:$/,""),G=E.split("+"),_;if(l)_=G.every(y=>a.get(y));else for(let[y,R]of a.entries())if(_=R||E!==y&&G.every(f=>f!==y),!_)break;if(_){let y=G.includes("data"),R,f=n;if(y){let[v,...z]=m.split(","),$=`${z.join(",")}${w}${p}`,T=v.split(";"),I=T[T.length-1]==="base64",h=$;I&&(h=ee($));try{let F=P(h).trim(),{protocol:se}=new URL(F);se.replace(/:$/,"").split("+").some(re=>A.test(re))&&(f="")}catch{}let B=S.test(h);h!==$||B?B?h=this.replace(h):this.#t.has(e)?this.#t.delete(e):R=!0:this.#t.has(e)?this.#t.delete(e):R=!0,(!v||Y.test(v))&&(h=this.purify(h)),f&&h?(I&&h!==$&&T.pop(),f=`${E}:${T.join(";")},${h}`):f=""}else R=!0;if(!y&&M.test(f)){let v=M.exec(f),{index:z}=v;f=f.substring(0,z).replace(/[?&]$/,"")}f?(u=f.replace(/%26/g,Z),R&&(this.#e=0)):this.#e=0}c.size&&c.forEach(y=>{super.remove(y)})}return u||null}parse(e,s){if(!d(e))throw new TypeError(`Expected String but got ${g(e)}.`);let r=new Map([["input",e]]),i;if(this.verify(e)){let{protocol:o}=new URL(e);o==="blob:"?i=e:i=this.sanitize(e,s??{allow:["data","file"]})}if(i){let o=new URL(i),{pathname:a,protocol:c}=o,u=c.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),u){let p=new Map,[n,...m]=a.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),r.set("data",Object.fromEntries(p))}else r.set("data",null);for(let p in o){let n=o[p];d(n)&&r.set(p,n)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}},b=new O,ce=async(t,e={allow:[],deny:[],only:[]})=>{let s;if(t&&d(t)){let r;try{let{protocol:i}=new URL(t);r=i.replace(/:$/,"")}catch{}if(r==="blob"){let{allow:i,deny:o,only:a}=e;if(Array.isArray(i)&&i.includes("blob")&&!(Array.isArray(o)&&o.includes("blob"))||Array.isArray(a)&&a.includes("blob")){let c;try{c=await fetch(t).then(l=>l.blob()).then(te)}catch{}if(c){if(Array.isArray(a))a.includes("data")||a.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=b.sanitize(c,e)}}URL.revokeObjectURL(t)}else r&&(s=b.sanitize(t,e))}return s||null},pe=(t,e)=>{let s;if(t&&d(t)){let r;try{let{protocol:i}=new URL(t);r=i.replace(/:$/,"")}catch{}r==="blob"?URL.revokeObjectURL(t):r&&(s=b.sanitize(t,e))}return s||null},le=async t=>b.parse(t),me=t=>b.parse(t),de=async t=>b.verify(t),fe=t=>b.verify(t),he=b;export{he as default,de as isURI,fe as isURISync,le as parseURL,me as parseURLSync,ce as sanitizeURL,pe as sanitizeURLSync}; | ||
/*! | ||
@@ -3,0 +3,0 @@ * URL Sanitizer |
@@ -1,3 +0,3 @@ | ||
var Pn=Object.create;var Gt=Object.defineProperty;var kn=Object.getOwnPropertyDescriptor;var Fn=Object.getOwnPropertyNames;var zn=Object.getPrototypeOf,Gn=Object.prototype.hasOwnProperty;var Hn=(s,t)=>()=>(t||s((t={exports:{}}).exports,t),t.exports);var $n=(s,t,r,m)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of Fn(t))!Gn.call(s,p)&&p!==r&&Gt(s,p,{get:()=>t[p],enumerable:!(m=kn(t,p))||m.enumerable});return s};var Bn=(s,t,r)=>(r=s!=null?Pn(zn(s)):{},$n(t||!s||!s.__esModule?Gt(r,"default",{value:s,enumerable:!0}):r,s));var Ht=Hn((Ze,Qe)=>{(function(s,t){typeof Ze=="object"&&typeof Qe<"u"?Qe.exports=t():typeof define=="function"&&define.amd?define(t):(s=typeof globalThis<"u"?globalThis:s||self,s.DOMPurify=t())})(Ze,function(){"use strict";let{entries:s,setPrototypeOf:t,isFrozen:r,getPrototypeOf:m,getOwnPropertyDescriptor:p}=Object,{freeze:l,seal:c,create:E}=Object,{apply:R,construct:U}=typeof Reflect<"u"&&Reflect;l||(l=function(i){return i}),c||(c=function(i){return i}),R||(R=function(i,g,u){return i.apply(g,u)}),U||(U=function(i,g){return new i(...g)});let T=D(Array.prototype.forEach),h=D(Array.prototype.pop),y=D(Array.prototype.push),B=D(String.prototype.toLowerCase),G=D(String.prototype.toString),W=D(String.prototype.match),j=D(String.prototype.replace),te=D(String.prototype.indexOf),F=D(String.prototype.trim),w=D(Object.prototype.hasOwnProperty),_=D(RegExp.prototype.test),z=ne(TypeError);function D(d){return function(i){for(var g=arguments.length,u=new Array(g>1?g-1:0),N=1;N<g;N++)u[N-1]=arguments[N];return R(d,i,u)}}function ne(d){return function(){for(var i=arguments.length,g=new Array(i),u=0;u<i;u++)g[u]=arguments[u];return U(d,g)}}function f(d,i){let g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:B;t&&t(d,null);let u=i.length;for(;u--;){let N=i[u];if(typeof N=="string"){let Y=g(N);Y!==N&&(r(i)||(i[u]=Y),N=Y)}d[N]=!0}return d}function Te(d){for(let i=0;i<d.length;i++)w(d,i)||(d[i]=null);return d}function S(d){let i=E(null);for(let[g,u]of s(d))w(d,g)&&(Array.isArray(u)?i[g]=Te(u):u&&typeof u=="object"&&u.constructor===Object?i[g]=S(u):i[g]=u);return i}function Z(d,i){for(;d!==null;){let u=p(d,i);if(u){if(u.get)return D(u.get);if(typeof u.value=="function")return D(u.value)}d=m(d)}function g(){return null}return g}let pe=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","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"]),fe=l(["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"]),_e=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),ve=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Me=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),en=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),rt=l(["#text"]),it=l(["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"]),Ie=l(["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"]),at=l(["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"]),Ae=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),tn=c(/\{\{[\w\W]*|[\w\W]*\}\}/gm),nn=c(/<%[\w\W]*|[\w\W]*%>/gm),sn=c(/\${[\w\W]*}/gm),on=c(/^data-[\-\w.\u00B7-\uFFFF]/),rn=c(/^aria-[\-\w]+$/),lt=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),an=c(/^(?:\w+script|data):/i),ln=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ct=c(/^html$/i),cn=c(/^[a-z][.\w]*(-[.\w]+)+$/i);var pt=Object.freeze({__proto__:null,MUSTACHE_EXPR:tn,ERB_EXPR:nn,TMPLIT_EXPR:sn,DATA_ATTR:on,ARIA_ATTR:rn,IS_ALLOWED_URI:lt,IS_SCRIPT_OR_DATA:an,ATTR_WHITESPACE:ln,DOCTYPE_NAME:ct,CUSTOM_ELEMENT:cn});let pn=function(){return typeof window>"u"?null:window},fn=function(i,g){if(typeof i!="object"||typeof i.createPolicy!="function")return null;let u=null,N="data-tt-policy-suffix";g&&g.hasAttribute(N)&&(u=g.getAttribute(N));let Y="dompurify"+(u?"#"+u:"");try{return i.createPolicy(Y,{createHTML(se){return se},createScriptURL(se){return se}})}catch{return console.warn("TrustedTypes policy "+Y+" could not be created."),null}};function ft(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:pn(),i=a=>ft(a);if(i.version="3.0.11",i.removed=[],!d||!d.document||d.document.nodeType!==9)return i.isSupported=!1,i;let{document:g}=d,u=g,N=u.currentScript,{DocumentFragment:Y,HTMLTemplateElement:se,Node:Ue,Element:mt,NodeFilter:me,NamedNodeMap:un=d.NamedNodeMap||d.MozNamedAttrMap,HTMLFormElement:dn,DOMParser:hn,trustedTypes:ye}=d,Re=mt.prototype,gn=Z(Re,"cloneNode"),En=Z(Re,"nextSibling"),Tn=Z(Re,"childNodes"),Pe=Z(Re,"parentNode");if(typeof se=="function"){let a=g.createElement("template");a.content&&a.content.ownerDocument&&(g=a.content.ownerDocument)}let I,ue="",{implementation:ke,createNodeIterator:_n,createDocumentFragment:An,getElementsByTagName:yn}=g,{importNode:Rn}=u,H={};i.isSupported=typeof s=="function"&&typeof Pe=="function"&&ke&&ke.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Fe,ERB_EXPR:ze,TMPLIT_EXPR:Ge,DATA_ATTR:bn,ARIA_ATTR:Sn,IS_SCRIPT_OR_DATA:wn,ATTR_WHITESPACE:ut,CUSTOM_ELEMENT:xn}=pt,{IS_ALLOWED_URI:dt}=pt,x=null,ht=f({},[...pe,...fe,..._e,...Me,...rt]),L=null,gt=f({},[...it,...Ie,...at,...Ae]),b=Object.seal(E(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}})),de=null,He=null,Et=!0,$e=!0,Tt=!1,_t=!0,oe=!1,Q=!1,Be=!1,We=!1,re=!1,be=!1,Se=!1,At=!0,yt=!1,Ln="user-content-",je=!0,he=!1,ie={},ae=null,Rt=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"]),bt=null,St=f({},["audio","video","img","source","image","track"]),Ye=null,wt=f({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),we="http://www.w3.org/1998/Math/MathML",xe="http://www.w3.org/2000/svg",X="http://www.w3.org/1999/xhtml",le=X,Xe=!1,qe=null,On=f({},[we,xe,X],G),ge=null,Dn=["application/xhtml+xml","text/html"],Cn="text/html",O=null,ce=null,Nn=g.createElement("form"),xt=function(e){return e instanceof RegExp||e instanceof Function},Ve=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ce&&ce===e)){if((!e||typeof e!="object")&&(e={}),e=S(e),ge=Dn.indexOf(e.PARSER_MEDIA_TYPE)===-1?Cn:e.PARSER_MEDIA_TYPE,O=ge==="application/xhtml+xml"?G:B,x=w(e,"ALLOWED_TAGS")?f({},e.ALLOWED_TAGS,O):ht,L=w(e,"ALLOWED_ATTR")?f({},e.ALLOWED_ATTR,O):gt,qe=w(e,"ALLOWED_NAMESPACES")?f({},e.ALLOWED_NAMESPACES,G):On,Ye=w(e,"ADD_URI_SAFE_ATTR")?f(S(wt),e.ADD_URI_SAFE_ATTR,O):wt,bt=w(e,"ADD_DATA_URI_TAGS")?f(S(St),e.ADD_DATA_URI_TAGS,O):St,ae=w(e,"FORBID_CONTENTS")?f({},e.FORBID_CONTENTS,O):Rt,de=w(e,"FORBID_TAGS")?f({},e.FORBID_TAGS,O):{},He=w(e,"FORBID_ATTR")?f({},e.FORBID_ATTR,O):{},ie=w(e,"USE_PROFILES")?e.USE_PROFILES:!1,Et=e.ALLOW_ARIA_ATTR!==!1,$e=e.ALLOW_DATA_ATTR!==!1,Tt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,_t=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,oe=e.SAFE_FOR_TEMPLATES||!1,Q=e.WHOLE_DOCUMENT||!1,re=e.RETURN_DOM||!1,be=e.RETURN_DOM_FRAGMENT||!1,Se=e.RETURN_TRUSTED_TYPE||!1,We=e.FORCE_BODY||!1,At=e.SANITIZE_DOM!==!1,yt=e.SANITIZE_NAMED_PROPS||!1,je=e.KEEP_CONTENT!==!1,he=e.IN_PLACE||!1,dt=e.ALLOWED_URI_REGEXP||lt,le=e.NAMESPACE||X,b=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(b.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(b.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(b.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),oe&&($e=!1),be&&(re=!0),ie&&(x=f({},rt),L=[],ie.html===!0&&(f(x,pe),f(L,it)),ie.svg===!0&&(f(x,fe),f(L,Ie),f(L,Ae)),ie.svgFilters===!0&&(f(x,_e),f(L,Ie),f(L,Ae)),ie.mathMl===!0&&(f(x,Me),f(L,at),f(L,Ae))),e.ADD_TAGS&&(x===ht&&(x=S(x)),f(x,e.ADD_TAGS,O)),e.ADD_ATTR&&(L===gt&&(L=S(L)),f(L,e.ADD_ATTR,O)),e.ADD_URI_SAFE_ATTR&&f(Ye,e.ADD_URI_SAFE_ATTR,O),e.FORBID_CONTENTS&&(ae===Rt&&(ae=S(ae)),f(ae,e.FORBID_CONTENTS,O)),je&&(x["#text"]=!0),Q&&f(x,["html","head","body"]),x.table&&(f(x,["tbody"]),delete de.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw z('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw z('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');I=e.TRUSTED_TYPES_POLICY,ue=I.createHTML("")}else I===void 0&&(I=fn(ye,N)),I!==null&&typeof ue=="string"&&(ue=I.createHTML(""));l&&l(e),ce=e}},Lt=f({},["mi","mo","mn","ms","mtext"]),Ot=f({},["foreignobject","desc","title","annotation-xml"]),vn=f({},["title","style","font","a","script"]),Dt=f({},[...fe,..._e,...ve]),Ct=f({},[...Me,...en]),Mn=function(e){let n=Pe(e);(!n||!n.tagName)&&(n={namespaceURI:le,tagName:"template"});let o=B(e.tagName),A=B(n.tagName);return qe[e.namespaceURI]?e.namespaceURI===xe?n.namespaceURI===X?o==="svg":n.namespaceURI===we?o==="svg"&&(A==="annotation-xml"||Lt[A]):!!Dt[o]:e.namespaceURI===we?n.namespaceURI===X?o==="math":n.namespaceURI===xe?o==="math"&&Ot[A]:!!Ct[o]:e.namespaceURI===X?n.namespaceURI===xe&&!Ot[A]||n.namespaceURI===we&&!Lt[A]?!1:!Ct[o]&&(vn[o]||!Dt[o]):!!(ge==="application/xhtml+xml"&&qe[e.namespaceURI]):!1},V=function(e){y(i.removed,{element:e});try{e.parentNode.removeChild(e)}catch{e.remove()}},Ke=function(e,n){try{y(i.removed,{attribute:n.getAttributeNode(e),from:n})}catch{y(i.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e==="is"&&!L[e])if(re||be)try{V(n)}catch{}else try{n.setAttribute(e,"")}catch{}},Nt=function(e){let n=null,o=null;if(We)e="<remove></remove>"+e;else{let M=W(e,/^[\r\n\t ]+/);o=M&&M[0]}ge==="application/xhtml+xml"&&le===X&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let A=I?I.createHTML(e):e;if(le===X)try{n=new hn().parseFromString(A,ge)}catch{}if(!n||!n.documentElement){n=ke.createDocument(le,"template",null);try{n.documentElement.innerHTML=Xe?ue:A}catch{}}let v=n.body||n.documentElement;return e&&o&&v.insertBefore(g.createTextNode(o),v.childNodes[0]||null),le===X?yn.call(n,Q?"html":"body")[0]:Q?n.documentElement:v},vt=function(e){return _n.call(e.ownerDocument||e,e,me.SHOW_ELEMENT|me.SHOW_COMMENT|me.SHOW_TEXT|me.SHOW_PROCESSING_INSTRUCTION|me.SHOW_CDATA_SECTION,null)},In=function(e){return e instanceof dn&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof un)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},Mt=function(e){return typeof Ue=="function"&&e instanceof Ue},q=function(e,n,o){H[e]&&T(H[e],A=>{A.call(i,n,o,ce)})},It=function(e){let n=null;if(q("beforeSanitizeElements",e,null),In(e))return V(e),!0;let o=O(e.nodeName);if(q("uponSanitizeElement",e,{tagName:o,allowedTags:x}),e.hasChildNodes()&&!Mt(e.firstElementChild)&&_(/<[/\w]/g,e.innerHTML)&&_(/<[/\w]/g,e.textContent)||e.nodeType===7)return V(e),!0;if(!x[o]||de[o]){if(!de[o]&&Pt(o)&&(b.tagNameCheck instanceof RegExp&&_(b.tagNameCheck,o)||b.tagNameCheck instanceof Function&&b.tagNameCheck(o)))return!1;if(je&&!ae[o]){let A=Pe(e)||e.parentNode,v=Tn(e)||e.childNodes;if(v&&A){let M=v.length;for(let P=M-1;P>=0;--P)A.insertBefore(gn(v[P],!0),En(e))}}return V(e),!0}return e instanceof mt&&!Mn(e)||(o==="noscript"||o==="noembed"||o==="noframes")&&_(/<\/no(script|embed|frames)/i,e.innerHTML)?(V(e),!0):(oe&&e.nodeType===3&&(n=e.textContent,T([Fe,ze,Ge],A=>{n=j(n,A," ")}),e.textContent!==n&&(y(i.removed,{element:e.cloneNode()}),e.textContent=n)),q("afterSanitizeElements",e,null),!1)},Ut=function(e,n,o){if(At&&(n==="id"||n==="name")&&(o in g||o in Nn))return!1;if(!($e&&!He[n]&&_(bn,n))){if(!(Et&&_(Sn,n))){if(!L[n]||He[n]){if(!(Pt(e)&&(b.tagNameCheck instanceof RegExp&&_(b.tagNameCheck,e)||b.tagNameCheck instanceof Function&&b.tagNameCheck(e))&&(b.attributeNameCheck instanceof RegExp&&_(b.attributeNameCheck,n)||b.attributeNameCheck instanceof Function&&b.attributeNameCheck(n))||n==="is"&&b.allowCustomizedBuiltInElements&&(b.tagNameCheck instanceof RegExp&&_(b.tagNameCheck,o)||b.tagNameCheck instanceof Function&&b.tagNameCheck(o))))return!1}else if(!Ye[n]){if(!_(dt,j(o,ut,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&e!=="script"&&te(o,"data:")===0&&bt[e])){if(!(Tt&&!_(wn,j(o,ut,"")))){if(o)return!1}}}}}}return!0},Pt=function(e){return e!=="annotation-xml"&&W(e,xn)},kt=function(e){q("beforeSanitizeAttributes",e,null);let{attributes:n}=e;if(!n)return;let o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:L},A=n.length;for(;A--;){let v=n[A],{name:M,namespaceURI:P,value:J}=v,Ee=O(M),k=M==="value"?J:F(J);if(o.attrName=Ee,o.attrValue=k,o.keepAttr=!0,o.forceKeepAttr=void 0,q("uponSanitizeAttribute",e,o),k=o.attrValue,o.forceKeepAttr||(Ke(M,e),!o.keepAttr))continue;if(!_t&&_(/\/>/i,k)){Ke(M,e);continue}oe&&T([Fe,ze,Ge],zt=>{k=j(k,zt," ")});let Ft=O(e.nodeName);if(Ut(Ft,Ee,k)){if(yt&&(Ee==="id"||Ee==="name")&&(Ke(M,e),k=Ln+k),I&&typeof ye=="object"&&typeof ye.getAttributeType=="function"&&!P)switch(ye.getAttributeType(Ft,Ee)){case"TrustedHTML":{k=I.createHTML(k);break}case"TrustedScriptURL":{k=I.createScriptURL(k);break}}try{P?e.setAttributeNS(P,M,k):e.setAttribute(M,k),h(i.removed)}catch{}}}q("afterSanitizeAttributes",e,null)},Un=function a(e){let n=null,o=vt(e);for(q("beforeSanitizeShadowDOM",e,null);n=o.nextNode();)q("uponSanitizeShadowNode",n,null),!It(n)&&(n.content instanceof Y&&a(n.content),kt(n));q("afterSanitizeShadowDOM",e,null)};return i.sanitize=function(a){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,o=null,A=null,v=null;if(Xe=!a,Xe&&(a="<!-->"),typeof a!="string"&&!Mt(a))if(typeof a.toString=="function"){if(a=a.toString(),typeof a!="string")throw z("dirty is not a string, aborting")}else throw z("toString is not a function");if(!i.isSupported)return a;if(Be||Ve(e),i.removed=[],typeof a=="string"&&(he=!1),he){if(a.nodeName){let J=O(a.nodeName);if(!x[J]||de[J])throw z("root node is forbidden and cannot be sanitized in-place")}}else if(a instanceof Ue)n=Nt("<!---->"),o=n.ownerDocument.importNode(a,!0),o.nodeType===1&&o.nodeName==="BODY"||o.nodeName==="HTML"?n=o:n.appendChild(o);else{if(!re&&!oe&&!Q&&a.indexOf("<")===-1)return I&&Se?I.createHTML(a):a;if(n=Nt(a),!n)return re?null:Se?ue:""}n&&We&&V(n.firstChild);let M=vt(he?a:n);for(;A=M.nextNode();)It(A)||(A.content instanceof Y&&Un(A.content),kt(A));if(he)return a;if(re){if(be)for(v=An.call(n.ownerDocument);n.firstChild;)v.appendChild(n.firstChild);else v=n;return(L.shadowroot||L.shadowrootmode)&&(v=Rn.call(u,v,!0)),v}let P=Q?n.outerHTML:n.innerHTML;return Q&&x["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&_(ct,n.ownerDocument.doctype.name)&&(P="<!DOCTYPE "+n.ownerDocument.doctype.name+`> | ||
`+P),oe&&T([Fe,ze,Ge],J=>{P=j(P,J," ")}),I&&Se?I.createHTML(P):P},i.setConfig=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ve(a),Be=!0},i.clearConfig=function(){ce=null,Be=!1},i.isValidAttribute=function(a,e,n){ce||Ve({});let o=O(a),A=O(e);return Ut(o,A,n)},i.addHook=function(a,e){typeof e=="function"&&(H[a]=H[a]||[],y(H[a],e))},i.removeHook=function(a){if(H[a])return h(H[a])},i.removeHooks=function(a){H[a]&&(H[a]=[])},i.removeAllHooks=function(){H={}},i}var mn=ft();return mn})});var Je=Bn(Ht(),1);var $t=/^[\w+/=-]+$/;var Le=/data:[\w#&+./;=-]*,/,et=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,Bt=/data:[\w#&+./;=-]*,[^"]+/g,Wt=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,jt=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var Yt=/^[a-z][\da-z+.-]*$/,Xt=/^(?:ext|web)\+[a-z]+$/,tt=/(?:java|vb)script/,Oe=/(?:java|vb)script|blob/,nt=/%(?:2[27]|3[CE])|[<>"']/,qt=/^%[\dA-F]{2}$/i;var $=s=>Object.prototype.toString.call(s).slice(8,-1),C=s=>typeof s=="string"||s instanceof String;var{FileReader:Vt}=globalThis;var De=[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 Ce=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","brid","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","dhttp","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","lid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","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-launchremotedesktop","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","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","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","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","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"];var Kt=s=>{if(!C(s))throw new TypeError(`Expected String but got ${$(s)}.`);let t=[];for(let r of s)t.push(`%${r.charCodeAt(0).toString(16).toUpperCase()}`);return t.join("")},Zt=s=>{C(s)&&qt.test(s)&&(s=s.toUpperCase());let[t,r,m,p,l,c]=["&","#","<",">",'"',"'"].map(Kt),E;return s===t?E=`${t}amp;`:s===m?E=`${t}lt;`:s===p?E=`${t}gt;`:s===l?E=`${t}quot;`:s===c?E=`${t}${r}39;`:E=s,E},Qt=s=>{if(C(s)){if(!$t.test(s))throw new Error(`Invalid base64 data: ${s}`)}else throw new TypeError(`Expected String but got ${$(s)}.`);let t=atob(s),r=Uint8Array.from([...t].map(l=>l.charCodeAt(0))),m=new Set(De),p;return r.every(l=>m.has(l))?p=t.replace(/\s/g,Kt):p=s,p},st=(s,t=0)=>{if(!C(s))throw new TypeError(`Expected String but got ${$(s)}.`);if(Number.isInteger(t)){if(t>16)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${$(t)}.`);let r=decodeURIComponent(s);if(/&#/.test(r)){let m=new Set(De),p=[...r.matchAll(Wt)].reverse();for(let l of p){let[c,E]=l,R;if(/^x[\dA-F]+/i.test(E)?R=parseInt(`0${E}`,16):/^\d+/.test(E)&&(R=parseInt(E)),Number.isInteger(R)){let{index:U}=l,[T,h]=[r.substring(0,U),r.substring(U+c.length)];m.has(R)?(r=`${T}${String.fromCharCode(R)}${h}`,(/#x?$/.test(T)||/^#(?:x(?:00)?[2-7]|\d)/.test(h))&&(r=st(r,++t))):R<16*16&&(r=`${T}${h}`)}}}return r},Jt=s=>new Promise((t,r)=>{let m=new Vt;m.addEventListener("error",()=>r(m.error)),m.addEventListener("abort",()=>t(m.result)),m.addEventListener("load",()=>t(m.result)),m.readAsDataURL(s)}),Ne=class{#e;constructor(){this.#e=new Set(Ce)}get(){return[...this.#e]}has(t){return this.#e.has(t)}add(t){if(C(t)){if(tt.test(t)||!Yt.test(t))throw new Error(`Invalid scheme: ${t}`)}else throw new TypeError(`Expected String but got ${$(t)}.`);return this.#e.add(t),[...this.#e]}remove(t){return this.#e.delete(t)}verify(t){let r;if(C(t))try{let{protocol:m}=new URL(t),p=m.replace(/:$/,""),l=p.split("+");r=!tt.test(p)&&Xt.test(p)||l.every(c=>this.#e.has(c))}catch{r=!1}return!!r}reset(){this.#e.clear();for(let t of Ce)this.#e.add(t)}};var ot=class extends Ne{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(t){if(!C(t))throw new TypeError(`Expected String but got ${$(t)}.`);let r=t;if(Le.test(r)){let p=[...r.matchAll(Bt)].reverse();for(let l of p){let[c]=l;et.test(c)&&([c]=et.exec(c)),this.#e++,this.#t.add(c);let E=this.sanitize(c,{allow:["data"]}),{index:R}=l,[U,T]=[r.substring(0,R),r.substring(R+c.length)];E?r=`${U}${E}${T}`:r=`${U}${T}`}}return r}purify(t){if(!C(t))throw new TypeError(`Expected String but got ${$(t)}.`);let r=Je.default.sanitize(decodeURIComponent(t));return r&&Le.test(r)&&(r=this.replace(r)),r=r.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(r)}sanitize(t,r){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:m,deny:p,only:l}=r??{},c=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),E=new Set,R=!1;if(Array.isArray(l)&&l.length){let T=super.get();for(let y of T)c.set(y,!1);let h=Object.values(l);for(let y of h)if(C(y)&&(y=y.trim(),!Oe.test(y))){if(super.has(y))c.set(y,!0);else{try{super.add(y)}catch{}super.has(y)&&(c.set(y,!0),E.add(y))}!R&&c.has(y)&&(R=c.get(y))}}else{if(Array.isArray(m)&&m.length){let T=Object.values(m);for(let h of T)if(C(h)&&(h=h.trim(),!Oe.test(h)))if(super.has(h))c.set(h,!0);else{try{super.add(h)}catch{}super.has(h)&&(c.set(h,!0),E.add(h))}}if(Array.isArray(p)&&p.length){let T=Object.values(p);for(let h of T)C(h)&&(h=h.trim(),h&&c.set(h,!1))}}let U;if(super.verify(t)){let{hash:T,href:h,pathname:y,protocol:B,search:G}=new URL(t),W=B.replace(/:$/,""),j=W.split("+"),te;if(R)te=j.every(F=>c.get(F));else for(let[F,w]of c.entries())if(te=w||W!==F&&j.every(_=>_!==F),!te)break;if(te){let F=j.includes("data"),w,_=h;if(F){let[z,...D]=y.split(","),ne=`${D.join(",")}${G}${T}`,f=z.split(";"),Te=f[f.length-1]==="base64",S=ne;Te&&(S=Qt(ne));try{let pe=st(S).trim(),{protocol:fe}=new URL(pe);fe.replace(/:$/,"").split("+").some(ve=>Oe.test(ve))&&(_="")}catch{}let Z=Le.test(S);S!==ne||Z?Z?S=this.replace(S):this.#t.has(t)?this.#t.delete(t):w=!0:this.#t.has(t)?this.#t.delete(t):w=!0,(!z||jt.test(z))&&(S=this.purify(S)),_&&S?(Te&&S!==ne&&f.pop(),_=`${W}:${f.join(";")},${S}`):_=""}else w=!0;if(!F&&nt.test(_)){let z=nt.exec(_),{index:D}=z;_=_.substring(0,D).replace(/[?&]$/,"")}_?(U=_.replace(/%26/g,Zt),w&&(this.#e=0)):this.#e=0}E.size&&E.forEach(F=>{super.remove(F)})}return U||null}parse(t,r){if(!C(t))throw new TypeError(`Expected String but got ${$(t)}.`);let m=new Map([["input",t]]),p;if(this.verify(t)){let{protocol:l}=new URL(t);l==="blob:"?p=t:p=this.sanitize(t,r??{allow:["data","file"]})}if(p){let l=new URL(p),{pathname:c,protocol:E}=l,U=E.replace(/:$/,"").split("+").includes("data");if(m.set("valid",!0),U){let T=new Map,[h,...y]=c.split(","),B=`${y.join(",")}`,G=h.split(";"),W=G[G.length-1]==="base64";W&&G.pop(),T.set("mime",G.join(";")),T.set("base64",W),T.set("data",B),m.set("data",Object.fromEntries(T))}else m.set("data",null);for(let T in l){let h=l[T];C(h)&&m.set(T,h)}}else m.set("valid",!1);return Object.fromEntries(m)}reset(){super.reset(),this.#e=0,this.#t.clear()}},K=new ot,qn=async(s,t={allow:[],deny:[],only:[]})=>{let r;if(s&&C(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(/:$/,"")}catch{}if(m==="blob"){let{allow:p,deny:l,only:c}=t;if(Array.isArray(p)&&p.includes("blob")&&!(Array.isArray(l)&&l.includes("blob"))||Array.isArray(c)&&c.includes("blob")){let E;try{E=await fetch(s).then(R=>R.blob()).then(Jt)}catch{}if(E){if(Array.isArray(c))c.includes("data")||c.push("data");else if(Array.isArray(p)&&(p.includes("data")||p.push("data"),Array.isArray(l)&&l.includes("data"))){let R=l.indexOf("data");l.splice(R,1)}r=K.sanitize(E,t)}}URL.revokeObjectURL(s)}else m&&(r=K.sanitize(s,t))}return r||null},Vn=(s,t)=>{let r;if(s&&C(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(/:$/,"")}catch{}m==="blob"?URL.revokeObjectURL(s):m&&(r=K.sanitize(s,t))}return r||null},Kn=async s=>K.parse(s),Zn=s=>K.parse(s),Qn=async s=>K.verify(s),Jn=s=>K.verify(s),es=K;export{es as default,Qn as isURI,Jn as isURISync,Kn as parseURL,Zn as parseURLSync,qn as sanitizeURL,Vn as sanitizeURLSync}; | ||
var zn=Object.create;var Bt=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var Hn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,Bn=Object.prototype.hasOwnProperty;var Wn=(s,t)=>()=>(t||s((t={exports:{}}).exports,t),t.exports);var jn=(s,t,r,m)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of Hn(t))!Bn.call(s,p)&&p!==r&&Bt(s,p,{get:()=>t[p],enumerable:!(m=Gn(t,p))||m.enumerable});return s};var Yn=(s,t,r)=>(r=s!=null?zn($n(s)):{},jn(t||!s||!s.__esModule?Bt(r,"default",{value:s,enumerable:!0}):r,s));var Wt=Wn((Je,et)=>{(function(s,t){typeof Je=="object"&&typeof et<"u"?et.exports=t():typeof define=="function"&&define.amd?define(t):(s=typeof globalThis<"u"?globalThis:s||self,s.DOMPurify=t())})(Je,function(){"use strict";let{entries:s,setPrototypeOf:t,isFrozen:r,getPrototypeOf:m,getOwnPropertyDescriptor:p}=Object,{freeze:l,seal:c,create:E}=Object,{apply:R,construct:P}=typeof Reflect<"u"&&Reflect;l||(l=function(i){return i}),c||(c=function(i){return i}),R||(R=function(i,g,u){return i.apply(g,u)}),P||(P=function(i,g){return new i(...g)});let _=D(Array.prototype.forEach),h=D(Array.prototype.pop),y=D(Array.prototype.push),j=D(String.prototype.toLowerCase),G=D(String.prototype.toString),Y=D(String.prototype.match),X=D(String.prototype.replace),te=D(String.prototype.indexOf),F=D(String.prototype.trim),w=D(Object.prototype.hasOwnProperty),T=D(RegExp.prototype.test),z=ne(TypeError);function D(d){return function(i){for(var g=arguments.length,u=new Array(g>1?g-1:0),M=1;M<g;M++)u[M-1]=arguments[M];return R(d,i,u)}}function ne(d){return function(){for(var i=arguments.length,g=new Array(i),u=0;u<i;u++)g[u]=arguments[u];return P(d,g)}}function f(d,i){let g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:j;t&&t(d,null);let u=i.length;for(;u--;){let M=i[u];if(typeof M=="string"){let q=g(M);q!==M&&(r(i)||(i[u]=q),M=q)}d[M]=!0}return d}function Ae(d){for(let i=0;i<d.length;i++)w(d,i)||(d[i]=null);return d}function S(d){let i=E(null);for(let[g,u]of s(d))w(d,g)&&(Array.isArray(u)?i[g]=Ae(u):u&&typeof u=="object"&&u.constructor===Object?i[g]=S(u):i[g]=u);return i}function Z(d,i){for(;d!==null;){let u=p(d,i);if(u){if(u.get)return D(u.get);if(typeof u.value=="function")return D(u.value)}d=m(d)}function g(){return null}return g}let pe=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","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"]),fe=l(["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"]),ye=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Ue=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Pe=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),sn=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),at=l(["#text"]),lt=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),ke=l(["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"]),ct=l(["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"]),Re=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),on=c(/\{\{[\w\W]*|[\w\W]*\}\}/gm),rn=c(/<%[\w\W]*|[\w\W]*%>/gm),an=c(/\${[\w\W]*}/gm),ln=c(/^data-[\-\w.\u00B7-\uFFFF]/),cn=c(/^aria-[\-\w]+$/),pt=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),pn=c(/^(?:\w+script|data):/i),fn=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ft=c(/^html$/i),mn=c(/^[a-z][.\w]*(-[.\w]+)+$/i);var mt=Object.freeze({__proto__:null,MUSTACHE_EXPR:on,ERB_EXPR:rn,TMPLIT_EXPR:an,DATA_ATTR:ln,ARIA_ATTR:cn,IS_ALLOWED_URI:pt,IS_SCRIPT_OR_DATA:pn,ATTR_WHITESPACE:fn,DOCTYPE_NAME:ft,CUSTOM_ELEMENT:mn});let me={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},un=function(){return typeof window>"u"?null:window},dn=function(i,g){if(typeof i!="object"||typeof i.createPolicy!="function")return null;let u=null,M="data-tt-policy-suffix";g&&g.hasAttribute(M)&&(u=g.getAttribute(M));let q="dompurify"+(u?"#"+u:"");try{return i.createPolicy(q,{createHTML(se){return se},createScriptURL(se){return se}})}catch{return console.warn("TrustedTypes policy "+q+" could not be created."),null}};function ut(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:un(),i=a=>ut(a);if(i.version="3.1.6",i.removed=[],!d||!d.document||d.document.nodeType!==me.document)return i.isSupported=!1,i;let{document:g}=d,u=g,M=u.currentScript,{DocumentFragment:q,HTMLTemplateElement:se,Node:Fe,Element:dt,NodeFilter:ue,NamedNodeMap:gn=d.NamedNodeMap||d.MozNamedAttrMap,HTMLFormElement:En,DOMParser:Tn,trustedTypes:be}=d,de=dt.prototype,_n=Z(de,"cloneNode"),An=Z(de,"remove"),yn=Z(de,"nextSibling"),Rn=Z(de,"childNodes"),Se=Z(de,"parentNode");if(typeof se=="function"){let a=g.createElement("template");a.content&&a.content.ownerDocument&&(g=a.content.ownerDocument)}let N,he="",{implementation:ze,createNodeIterator:bn,createDocumentFragment:Sn,getElementsByTagName:wn}=g,{importNode:xn}=u,H={};i.isSupported=typeof s=="function"&&typeof Se=="function"&&ze&&ze.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Ge,ERB_EXPR:He,TMPLIT_EXPR:$e,DATA_ATTR:Ln,ARIA_ATTR:On,IS_SCRIPT_OR_DATA:Dn,ATTR_WHITESPACE:ht,CUSTOM_ELEMENT:Cn}=mt,{IS_ALLOWED_URI:gt}=mt,x=null,Et=f({},[...pe,...fe,...ye,...Pe,...at]),L=null,Tt=f({},[...lt,...ke,...ct,...Re]),b=Object.seal(E(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}})),ge=null,Be=null,_t=!0,We=!0,At=!1,yt=!0,oe=!1,je=!0,J=!1,Ye=!1,Xe=!1,re=!1,we=!1,xe=!1,Rt=!0,bt=!1,vn="user-content-",qe=!0,Ee=!1,ie={},ae=null,St=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"]),wt=null,xt=f({},["audio","video","img","source","image","track"]),Ve=null,Lt=f({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Le="http://www.w3.org/1998/Math/MathML",Oe="http://www.w3.org/2000/svg",V="http://www.w3.org/1999/xhtml",le=V,Ke=!1,Ze=null,Mn=f({},[Le,Oe,V],G),Te=null,In=["application/xhtml+xml","text/html"],Nn="text/html",O=null,ce=null,Un=g.createElement("form"),Ot=function(e){return e instanceof RegExp||e instanceof Function},Qe=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ce&&ce===e)){if((!e||typeof e!="object")&&(e={}),e=S(e),Te=In.indexOf(e.PARSER_MEDIA_TYPE)===-1?Nn:e.PARSER_MEDIA_TYPE,O=Te==="application/xhtml+xml"?G:j,x=w(e,"ALLOWED_TAGS")?f({},e.ALLOWED_TAGS,O):Et,L=w(e,"ALLOWED_ATTR")?f({},e.ALLOWED_ATTR,O):Tt,Ze=w(e,"ALLOWED_NAMESPACES")?f({},e.ALLOWED_NAMESPACES,G):Mn,Ve=w(e,"ADD_URI_SAFE_ATTR")?f(S(Lt),e.ADD_URI_SAFE_ATTR,O):Lt,wt=w(e,"ADD_DATA_URI_TAGS")?f(S(xt),e.ADD_DATA_URI_TAGS,O):xt,ae=w(e,"FORBID_CONTENTS")?f({},e.FORBID_CONTENTS,O):St,ge=w(e,"FORBID_TAGS")?f({},e.FORBID_TAGS,O):{},Be=w(e,"FORBID_ATTR")?f({},e.FORBID_ATTR,O):{},ie=w(e,"USE_PROFILES")?e.USE_PROFILES:!1,_t=e.ALLOW_ARIA_ATTR!==!1,We=e.ALLOW_DATA_ATTR!==!1,At=e.ALLOW_UNKNOWN_PROTOCOLS||!1,yt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,oe=e.SAFE_FOR_TEMPLATES||!1,je=e.SAFE_FOR_XML!==!1,J=e.WHOLE_DOCUMENT||!1,re=e.RETURN_DOM||!1,we=e.RETURN_DOM_FRAGMENT||!1,xe=e.RETURN_TRUSTED_TYPE||!1,Xe=e.FORCE_BODY||!1,Rt=e.SANITIZE_DOM!==!1,bt=e.SANITIZE_NAMED_PROPS||!1,qe=e.KEEP_CONTENT!==!1,Ee=e.IN_PLACE||!1,gt=e.ALLOWED_URI_REGEXP||pt,le=e.NAMESPACE||V,b=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Ot(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(b.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Ot(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(b.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(b.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),oe&&(We=!1),we&&(re=!0),ie&&(x=f({},at),L=[],ie.html===!0&&(f(x,pe),f(L,lt)),ie.svg===!0&&(f(x,fe),f(L,ke),f(L,Re)),ie.svgFilters===!0&&(f(x,ye),f(L,ke),f(L,Re)),ie.mathMl===!0&&(f(x,Pe),f(L,ct),f(L,Re))),e.ADD_TAGS&&(x===Et&&(x=S(x)),f(x,e.ADD_TAGS,O)),e.ADD_ATTR&&(L===Tt&&(L=S(L)),f(L,e.ADD_ATTR,O)),e.ADD_URI_SAFE_ATTR&&f(Ve,e.ADD_URI_SAFE_ATTR,O),e.FORBID_CONTENTS&&(ae===St&&(ae=S(ae)),f(ae,e.FORBID_CONTENTS,O)),qe&&(x["#text"]=!0),J&&f(x,["html","head","body"]),x.table&&(f(x,["tbody"]),delete ge.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw z('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw z('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');N=e.TRUSTED_TYPES_POLICY,he=N.createHTML("")}else N===void 0&&(N=dn(be,M)),N!==null&&typeof he=="string"&&(he=N.createHTML(""));l&&l(e),ce=e}},Dt=f({},["mi","mo","mn","ms","mtext"]),Ct=f({},["foreignobject","annotation-xml"]),Pn=f({},["title","style","font","a","script"]),vt=f({},[...fe,...ye,...Ue]),Mt=f({},[...Pe,...sn]),kn=function(e){let n=Se(e);(!n||!n.tagName)&&(n={namespaceURI:le,tagName:"template"});let o=j(e.tagName),A=j(n.tagName);return Ze[e.namespaceURI]?e.namespaceURI===Oe?n.namespaceURI===V?o==="svg":n.namespaceURI===Le?o==="svg"&&(A==="annotation-xml"||Dt[A]):!!vt[o]:e.namespaceURI===Le?n.namespaceURI===V?o==="math":n.namespaceURI===Oe?o==="math"&&Ct[A]:!!Mt[o]:e.namespaceURI===V?n.namespaceURI===Oe&&!Ct[A]||n.namespaceURI===Le&&!Dt[A]?!1:!Mt[o]&&(Pn[o]||!vt[o]):!!(Te==="application/xhtml+xml"&&Ze[e.namespaceURI]):!1},$=function(e){y(i.removed,{element:e});try{Se(e).removeChild(e)}catch{An(e)}},De=function(e,n){try{y(i.removed,{attribute:n.getAttributeNode(e),from:n})}catch{y(i.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e==="is"&&!L[e])if(re||we)try{$(n)}catch{}else try{n.setAttribute(e,"")}catch{}},It=function(e){let n=null,o=null;if(Xe)e="<remove></remove>"+e;else{let C=Y(e,/^[\r\n\t ]+/);o=C&&C[0]}Te==="application/xhtml+xml"&&le===V&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let A=N?N.createHTML(e):e;if(le===V)try{n=new Tn().parseFromString(A,Te)}catch{}if(!n||!n.documentElement){n=ze.createDocument(le,"template",null);try{n.documentElement.innerHTML=Ke?he:A}catch{}}let I=n.body||n.documentElement;return e&&o&&I.insertBefore(g.createTextNode(o),I.childNodes[0]||null),le===V?wn.call(n,J?"html":"body")[0]:J?n.documentElement:I},Nt=function(e){return bn.call(e.ownerDocument||e,e,ue.SHOW_ELEMENT|ue.SHOW_COMMENT|ue.SHOW_TEXT|ue.SHOW_PROCESSING_INSTRUCTION|ue.SHOW_CDATA_SECTION,null)},Ut=function(e){return e instanceof En&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof gn)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},Pt=function(e){return typeof Fe=="function"&&e instanceof Fe},K=function(e,n,o){H[e]&&_(H[e],A=>{A.call(i,n,o,ce)})},kt=function(e){let n=null;if(K("beforeSanitizeElements",e,null),Ut(e))return $(e),!0;let o=O(e.nodeName);if(K("uponSanitizeElement",e,{tagName:o,allowedTags:x}),e.hasChildNodes()&&!Pt(e.firstElementChild)&&T(/<[/\w]/g,e.innerHTML)&&T(/<[/\w]/g,e.textContent)||e.nodeType===me.progressingInstruction||je&&e.nodeType===me.comment&&T(/<[/\w]/g,e.data))return $(e),!0;if(!x[o]||ge[o]){if(!ge[o]&&zt(o)&&(b.tagNameCheck instanceof RegExp&&T(b.tagNameCheck,o)||b.tagNameCheck instanceof Function&&b.tagNameCheck(o)))return!1;if(qe&&!ae[o]){let A=Se(e)||e.parentNode,I=Rn(e)||e.childNodes;if(I&&A){let C=I.length;for(let k=C-1;k>=0;--k){let B=_n(I[k],!0);B.__removalCount=(e.__removalCount||0)+1,A.insertBefore(B,yn(e))}}}return $(e),!0}return e instanceof dt&&!kn(e)||(o==="noscript"||o==="noembed"||o==="noframes")&&T(/<\/no(script|embed|frames)/i,e.innerHTML)?($(e),!0):(oe&&e.nodeType===me.text&&(n=e.textContent,_([Ge,He,$e],A=>{n=X(n,A," ")}),e.textContent!==n&&(y(i.removed,{element:e.cloneNode()}),e.textContent=n)),K("afterSanitizeElements",e,null),!1)},Ft=function(e,n,o){if(Rt&&(n==="id"||n==="name")&&(o in g||o in Un))return!1;if(!(We&&!Be[n]&&T(Ln,n))){if(!(_t&&T(On,n))){if(!L[n]||Be[n]){if(!(zt(e)&&(b.tagNameCheck instanceof RegExp&&T(b.tagNameCheck,e)||b.tagNameCheck instanceof Function&&b.tagNameCheck(e))&&(b.attributeNameCheck instanceof RegExp&&T(b.attributeNameCheck,n)||b.attributeNameCheck instanceof Function&&b.attributeNameCheck(n))||n==="is"&&b.allowCustomizedBuiltInElements&&(b.tagNameCheck instanceof RegExp&&T(b.tagNameCheck,o)||b.tagNameCheck instanceof Function&&b.tagNameCheck(o))))return!1}else if(!Ve[n]){if(!T(gt,X(o,ht,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&e!=="script"&&te(o,"data:")===0&&wt[e])){if(!(At&&!T(Dn,X(o,ht,"")))){if(o)return!1}}}}}}return!0},zt=function(e){return e!=="annotation-xml"&&Y(e,Cn)},Gt=function(e){K("beforeSanitizeAttributes",e,null);let{attributes:n}=e;if(!n)return;let o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:L},A=n.length;for(;A--;){let I=n[A],{name:C,namespaceURI:k,value:B}=I,_e=O(C),U=C==="value"?B:F(B);if(o.attrName=_e,o.attrValue=U,o.keepAttr=!0,o.forceKeepAttr=void 0,K("uponSanitizeAttribute",e,o),U=o.attrValue,je&&T(/((--!?|])>)|<\/(style|title)/i,U)){De(C,e);continue}if(o.forceKeepAttr||(De(C,e),!o.keepAttr))continue;if(!yt&&T(/\/>/i,U)){De(C,e);continue}oe&&_([Ge,He,$e],$t=>{U=X(U,$t," ")});let Ht=O(e.nodeName);if(Ft(Ht,_e,U)){if(bt&&(_e==="id"||_e==="name")&&(De(C,e),U=vn+U),N&&typeof be=="object"&&typeof be.getAttributeType=="function"&&!k)switch(be.getAttributeType(Ht,_e)){case"TrustedHTML":{U=N.createHTML(U);break}case"TrustedScriptURL":{U=N.createScriptURL(U);break}}try{k?e.setAttributeNS(k,C,U):e.setAttribute(C,U),Ut(e)?$(e):h(i.removed)}catch{}}}K("afterSanitizeAttributes",e,null)},Fn=function a(e){let n=null,o=Nt(e);for(K("beforeSanitizeShadowDOM",e,null);n=o.nextNode();)K("uponSanitizeShadowNode",n,null),!kt(n)&&(n.content instanceof q&&a(n.content),Gt(n));K("afterSanitizeShadowDOM",e,null)};return i.sanitize=function(a){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,o=null,A=null,I=null;if(Ke=!a,Ke&&(a="<!-->"),typeof a!="string"&&!Pt(a))if(typeof a.toString=="function"){if(a=a.toString(),typeof a!="string")throw z("dirty is not a string, aborting")}else throw z("toString is not a function");if(!i.isSupported)return a;if(Ye||Qe(e),i.removed=[],typeof a=="string"&&(Ee=!1),Ee){if(a.nodeName){let B=O(a.nodeName);if(!x[B]||ge[B])throw z("root node is forbidden and cannot be sanitized in-place")}}else if(a instanceof Fe)n=It("<!---->"),o=n.ownerDocument.importNode(a,!0),o.nodeType===me.element&&o.nodeName==="BODY"||o.nodeName==="HTML"?n=o:n.appendChild(o);else{if(!re&&!oe&&!J&&a.indexOf("<")===-1)return N&&xe?N.createHTML(a):a;if(n=It(a),!n)return re?null:xe?he:""}n&&Xe&&$(n.firstChild);let C=Nt(Ee?a:n);for(;A=C.nextNode();)kt(A)||(A.content instanceof q&&Fn(A.content),Gt(A));if(Ee)return a;if(re){if(we)for(I=Sn.call(n.ownerDocument);n.firstChild;)I.appendChild(n.firstChild);else I=n;return(L.shadowroot||L.shadowrootmode)&&(I=xn.call(u,I,!0)),I}let k=J?n.outerHTML:n.innerHTML;return J&&x["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&T(ft,n.ownerDocument.doctype.name)&&(k="<!DOCTYPE "+n.ownerDocument.doctype.name+`> | ||
`+k),oe&&_([Ge,He,$e],B=>{k=X(k,B," ")}),N&&xe?N.createHTML(k):k},i.setConfig=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Qe(a),Ye=!0},i.clearConfig=function(){ce=null,Ye=!1},i.isValidAttribute=function(a,e,n){ce||Qe({});let o=O(a),A=O(e);return Ft(o,A,n)},i.addHook=function(a,e){typeof e=="function"&&(H[a]=H[a]||[],y(H[a],e))},i.removeHook=function(a){if(H[a])return h(H[a])},i.removeHooks=function(a){H[a]&&(H[a]=[])},i.removeAllHooks=function(){H={}},i}var hn=ut();return hn})});var tt=Yn(Wt(),1);var jt=/^[\w+/=-]+$/;var Ce=/data:[\w#&+./;=-]*,/,nt=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,Yt=/data:[\w#&+./;=-]*,[^"]+/g,Xt=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,qt=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var Vt=/^[a-z][\da-z+.-]*$/,Kt=/^(?:ext|web)\+[a-z]+$/,st=/(?:java|vb)script/,ve=/(?:java|vb)script|blob/,ot=/%(?:2[27]|3[CE])|[<>"']/,Zt=/^%[\dA-F]{2}$/i;var W=s=>Object.prototype.toString.call(s).slice(8,-1),v=s=>typeof s=="string"||s instanceof String;var{FileReader:Qt}=globalThis;var Me=[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 Ie=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","brid","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","dhttp","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","hs20","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","lid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","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-launchremotedesktop","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-recall","ms-remotedesktop","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","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","openpgp4fpr","otpauth","palm","paparazzi","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","thzp","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","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"];var Jt=s=>{if(!v(s))throw new TypeError(`Expected String but got ${W(s)}.`);let t=[];for(let r of s)t.push(`%${r.charCodeAt(0).toString(16).toUpperCase()}`);return t.join("")},en=s=>{v(s)&&Zt.test(s)&&(s=s.toUpperCase());let[t,r,m,p,l,c]=["&","#","<",">",'"',"'"].map(Jt),E;return s===t?E=`${t}amp;`:s===m?E=`${t}lt;`:s===p?E=`${t}gt;`:s===l?E=`${t}quot;`:s===c?E=`${t}${r}39;`:E=s,E},tn=s=>{if(v(s)){if(!jt.test(s))throw new Error(`Invalid base64 data: ${s}`)}else throw new TypeError(`Expected String but got ${W(s)}.`);let t=atob(s),r=Uint8Array.from([...t].map(l=>l.charCodeAt(0))),m=new Set(Me),p;return r.every(l=>m.has(l))?p=t.replace(/\s/g,Jt):p=s,p},rt=(s,t=0)=>{if(!v(s))throw new TypeError(`Expected String but got ${W(s)}.`);if(Number.isInteger(t)){if(t>16)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${W(t)}.`);let r=decodeURIComponent(s);if(/&#/.test(r)){let m=new Set(Me),p=[...r.matchAll(Xt)].reverse();for(let l of p){let[c,E]=l,R;if(/^x[\dA-F]+/i.test(E)?R=parseInt(`0${E}`,16):/^\d+/.test(E)&&(R=parseInt(E)),Number.isInteger(R)){let{index:P}=l,[_,h]=[r.substring(0,P),r.substring(P+c.length)];m.has(R)?(r=`${_}${String.fromCharCode(R)}${h}`,(/#x?$/.test(_)||/^#(?:x(?:00)?[2-7]|\d)/.test(h))&&(r=rt(r,++t))):R<16*16&&(r=`${_}${h}`)}}}return r},nn=s=>new Promise((t,r)=>{let m=new Qt;m.addEventListener("error",()=>r(m.error)),m.addEventListener("abort",()=>t(m.result)),m.addEventListener("load",()=>t(m.result)),m.readAsDataURL(s)}),Ne=class{#e;constructor(){this.#e=new Set(Ie)}get(){return[...this.#e]}has(t){return this.#e.has(t)}add(t){if(v(t)){if(st.test(t)||!Vt.test(t))throw new Error(`Invalid scheme: ${t}`)}else throw new TypeError(`Expected String but got ${W(t)}.`);return this.#e.add(t),[...this.#e]}remove(t){return this.#e.delete(t)}verify(t){let r;if(v(t))try{let{protocol:m}=new URL(t),p=m.replace(/:$/,""),l=p.split("+");r=!st.test(p)&&Kt.test(p)||l.every(c=>this.#e.has(c))}catch{r=!1}return!!r}reset(){this.#e.clear();for(let t of Ie)this.#e.add(t)}};var it=class extends Ne{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(t){if(!v(t))throw new TypeError(`Expected String but got ${W(t)}.`);let r=t;if(Ce.test(r)){let p=[...r.matchAll(Yt)].reverse();for(let l of p){let[c]=l;nt.test(c)&&([c]=nt.exec(c)),this.#e++,this.#t.add(c);let E=this.sanitize(c,{allow:["data"]}),{index:R}=l,[P,_]=[r.substring(0,R),r.substring(R+c.length)];E?r=`${P}${E}${_}`:r=`${P}${_}`}}return r}purify(t){if(!v(t))throw new TypeError(`Expected String but got ${W(t)}.`);let r=tt.default.sanitize(decodeURIComponent(t));return r&&Ce.test(r)&&(r=this.replace(r)),r=r.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(r)}sanitize(t,r){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:m,deny:p,only:l}=r??{},c=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),E=new Set,R=!1;if(Array.isArray(l)&&l.length){let _=super.get();for(let y of _)c.set(y,!1);let h=Object.values(l);for(let y of h)if(v(y)&&(y=y.trim(),!ve.test(y))){if(super.has(y))c.set(y,!0);else{try{super.add(y)}catch{}super.has(y)&&(c.set(y,!0),E.add(y))}!R&&c.has(y)&&(R=c.get(y))}}else{if(Array.isArray(m)&&m.length){let _=Object.values(m);for(let h of _)if(v(h)&&(h=h.trim(),!ve.test(h)))if(super.has(h))c.set(h,!0);else{try{super.add(h)}catch{}super.has(h)&&(c.set(h,!0),E.add(h))}}if(Array.isArray(p)&&p.length){let _=Object.values(p);for(let h of _)v(h)&&(h=h.trim(),h&&c.set(h,!1))}}let P;if(super.verify(t)){let{hash:_,href:h,pathname:y,protocol:j,search:G}=new URL(t),Y=j.replace(/:$/,""),X=Y.split("+"),te;if(R)te=X.every(F=>c.get(F));else for(let[F,w]of c.entries())if(te=w||Y!==F&&X.every(T=>T!==F),!te)break;if(te){let F=X.includes("data"),w,T=h;if(F){let[z,...D]=y.split(","),ne=`${D.join(",")}${G}${_}`,f=z.split(";"),Ae=f[f.length-1]==="base64",S=ne;Ae&&(S=tn(ne));try{let pe=rt(S).trim(),{protocol:fe}=new URL(pe);fe.replace(/:$/,"").split("+").some(Ue=>ve.test(Ue))&&(T="")}catch{}let Z=Ce.test(S);S!==ne||Z?Z?S=this.replace(S):this.#t.has(t)?this.#t.delete(t):w=!0:this.#t.has(t)?this.#t.delete(t):w=!0,(!z||qt.test(z))&&(S=this.purify(S)),T&&S?(Ae&&S!==ne&&f.pop(),T=`${Y}:${f.join(";")},${S}`):T=""}else w=!0;if(!F&&ot.test(T)){let z=ot.exec(T),{index:D}=z;T=T.substring(0,D).replace(/[?&]$/,"")}T?(P=T.replace(/%26/g,en),w&&(this.#e=0)):this.#e=0}E.size&&E.forEach(F=>{super.remove(F)})}return P||null}parse(t,r){if(!v(t))throw new TypeError(`Expected String but got ${W(t)}.`);let m=new Map([["input",t]]),p;if(this.verify(t)){let{protocol:l}=new URL(t);l==="blob:"?p=t:p=this.sanitize(t,r??{allow:["data","file"]})}if(p){let l=new URL(p),{pathname:c,protocol:E}=l,P=E.replace(/:$/,"").split("+").includes("data");if(m.set("valid",!0),P){let _=new Map,[h,...y]=c.split(","),j=`${y.join(",")}`,G=h.split(";"),Y=G[G.length-1]==="base64";Y&&G.pop(),_.set("mime",G.join(";")),_.set("base64",Y),_.set("data",j),m.set("data",Object.fromEntries(_))}else m.set("data",null);for(let _ in l){let h=l[_];v(h)&&m.set(_,h)}}else m.set("valid",!1);return Object.fromEntries(m)}reset(){super.reset(),this.#e=0,this.#t.clear()}},Q=new it,Zn=async(s,t={allow:[],deny:[],only:[]})=>{let r;if(s&&v(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(/:$/,"")}catch{}if(m==="blob"){let{allow:p,deny:l,only:c}=t;if(Array.isArray(p)&&p.includes("blob")&&!(Array.isArray(l)&&l.includes("blob"))||Array.isArray(c)&&c.includes("blob")){let E;try{E=await fetch(s).then(R=>R.blob()).then(nn)}catch{}if(E){if(Array.isArray(c))c.includes("data")||c.push("data");else if(Array.isArray(p)&&(p.includes("data")||p.push("data"),Array.isArray(l)&&l.includes("data"))){let R=l.indexOf("data");l.splice(R,1)}r=Q.sanitize(E,t)}}URL.revokeObjectURL(s)}else m&&(r=Q.sanitize(s,t))}return r||null},Qn=(s,t)=>{let r;if(s&&v(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(/:$/,"")}catch{}m==="blob"?URL.revokeObjectURL(s):m&&(r=Q.sanitize(s,t))}return r||null},Jn=async s=>Q.parse(s),es=s=>Q.parse(s),ts=async s=>Q.verify(s),ns=s=>Q.verify(s),ss=Q;export{ss as default,ts as isURI,ns as isURISync,Jn as parseURL,es as parseURLSync,Zn as sanitizeURL,Qn as sanitizeURLSync}; | ||
/*! | ||
@@ -13,4 +13,4 @@ * URL Sanitizer | ||
dompurify/dist/purify.js: | ||
(*! @license DOMPurify 3.0.11 | (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.11/LICENSE *) | ||
(*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE *) | ||
*/ | ||
//# sourceMappingURL=url-sanitizer.min.js.map |
@@ -24,28 +24,28 @@ { | ||
"dependencies": { | ||
"dompurify": "^3.0.11", | ||
"jsdom": "^24.0.0" | ||
"dompurify": "^3.1.6", | ||
"jsdom": "^24.1.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/eslint-parser": "^7.24.1", | ||
"@babel/plugin-syntax-import-assertions": "^7.24.1", | ||
"@babel/eslint-parser": "^7.24.7", | ||
"@babel/plugin-syntax-import-assertions": "^7.24.7", | ||
"@types/dompurify": "^3.0.5", | ||
"@types/jsdom": "^21.1.6", | ||
"c8": "^9.1.0", | ||
"chai": "^5.1.0", | ||
"commander": "^12.0.0", | ||
"@types/jsdom": "^21.1.7", | ||
"c8": "^10.1.2", | ||
"chai": "^5.1.1", | ||
"commander": "^12.1.0", | ||
"copyfiles": "^2.4.1", | ||
"csvtojson": "^2.0.10", | ||
"esbuild": "^0.20.2", | ||
"esbuild": "^0.23.0", | ||
"eslint": "^8.57.0", | ||
"eslint-config-standard": "^17.1.0", | ||
"eslint-plugin-import": "^2.29.1", | ||
"eslint-plugin-jsdoc": "^48.2.1", | ||
"eslint-plugin-regexp": "^2.3.0", | ||
"eslint-plugin-unicorn": "^51.0.1", | ||
"eslint-plugin-jsdoc": "^48.6.0", | ||
"eslint-plugin-regexp": "^2.6.0", | ||
"eslint-plugin-unicorn": "^54.0.0", | ||
"http-server": "^14.1.1", | ||
"mocha": "^10.3.0", | ||
"mocha": "^10.6.0", | ||
"npm-run-all": "^4.1.5", | ||
"sinon": "^17.0.1", | ||
"typescript": "^5.4.3", | ||
"undici": "^6.10.1" | ||
"sinon": "^18.0.0", | ||
"typescript": "^5.5.3", | ||
"undici": "^6.19.2" | ||
}, | ||
@@ -69,3 +69,3 @@ "scripts": { | ||
}, | ||
"version": "2.0.0" | ||
"version": "2.0.1" | ||
} |
@@ -1,1 +0,1 @@ | ||
["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","brid","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","dhttp","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","lid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","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-launchremotedesktop","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","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","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","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","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"] | ||
["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","brid","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","dhttp","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","hs20","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","lid","lorawan","lpa","lvlt","machineProvisioningProgressReporter","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-launchremotedesktop","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-recall","ms-remotedesktop","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","mvrp","mvrps","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openid","openpgp4fpr","otpauth","palm","paparazzi","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","thzp","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","xftp","xmlrpc.beep","xmlrpc.beeps","xmpp","xrcp","xri","ymsgr","z39.50r","z39.50s"] |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
290395
1394
Updateddompurify@^3.1.6
Updatedjsdom@^24.1.0