url-sanitizer
Advanced tools
Comparing version 2.0.6 to 2.0.7
@@ -1,2 +0,2 @@ | ||
var{DOMPurify:N}=globalThis;var H=/^[\w+/=-]+$/;var S=/data:[\w#&+./;=-]*,/,D=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,q=/data:[\w#&+./;=-]*,[^\x22]+/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=/%(?:22|27|3C|3E)|[\x22\x27<>]/,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","bluetooth","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-personacard","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","shelter","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,a,o]=["&","#","<",">",'"',"'"].map(W),c;return t===e?c=`${e}amp;`:t===r?c=`${e}lt;`:t===i?c=`${e}gt;`:t===a?c=`${e}quot;`:t===o?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(a=>a.charCodeAt(0))),r=new Set(L),i;return s.every(a=>r.has(a))?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 a of i){let[o,c]=a,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}=a,[p,n]=[s.substring(0,u),s.substring(u+o.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(/:$/,""),a=i.split("+");s=!j.test(i)&&J.test(i)||a.every(o=>this.#e.has(o))}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 a of i){let[o]=a;D.test(o)&&([o]=D.exec(o)),this.#e++,this.#t.add(o);let c=this.sanitize(o,{allow:["data"]}),{index:l}=a,[u,p]=[s.substring(0,l),s.substring(l+o.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:a}=s??{},o=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),c=new Set,l=!1;if(Array.isArray(a)&&a.length){let p=super.get();for(let m of p)o.set(m,!1);let n=Object.values(a);for(let m of n)if(d(m)&&(m=m.trim(),!A.test(m))){if(super.has(m))o.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(o.set(m,!0),c.add(m))}!l&&o.has(m)&&(l=o.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))o.set(n,!0);else{try{super.add(n)}catch{}super.has(n)&&(o.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&&o.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=>o.get(y));else for(let[y,R]of o.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:a}=new URL(e);a==="blob:"?i=e:i=this.sanitize(e,s??{allow:["data","file"]})}if(i){let a=new URL(i),{pathname:o,protocol:c}=a,u=c.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),u){let p=new Map,[n,...m]=o.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 a){let n=a[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:a,only:o}=e;if(Array.isArray(i)&&i.includes("blob")&&!(Array.isArray(a)&&a.includes("blob"))||Array.isArray(o)&&o.includes("blob")){let c;try{c=await fetch(t).then(l=>l.blob()).then(te)}catch{}if(c){if(Array.isArray(o))o.includes("data")||o.push("data");else if(Array.isArray(i)&&(i.includes("data")||i.push("data"),Array.isArray(a)&&a.includes("data"))){let l=a.indexOf("data");a.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#&+./;=-]*,[^\x22]+/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=/%(?:22|27|3C|3E)|[\x22\x27<>]/,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","bluetooth","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-personacard","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","shelter","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","teapot","teapots","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,a,o]=["&","#","<",">",'"',"'"].map(W),c;return t===e?c=`${e}amp;`:t===r?c=`${e}lt;`:t===i?c=`${e}gt;`:t===a?c=`${e}quot;`:t===o?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(a=>a.charCodeAt(0))),r=new Set(L),i;return s.every(a=>r.has(a))?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 a of i){let[o,c]=a,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}=a,[p,n]=[s.substring(0,u),s.substring(u+o.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(/:$/,""),a=i.split("+");s=!j.test(i)&&J.test(i)||a.every(o=>this.#e.has(o))}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 a of i){let[o]=a;D.test(o)&&([o]=D.exec(o)),this.#e++,this.#t.add(o);let c=this.sanitize(o,{allow:["data"]}),{index:l}=a,[u,p]=[s.substring(0,l),s.substring(l+o.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:a}=s??{},o=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),c=new Set,l=!1;if(Array.isArray(a)&&a.length){let p=super.get();for(let m of p)o.set(m,!1);let n=Object.values(a);for(let m of n)if(d(m)&&(m=m.trim(),!A.test(m))){if(super.has(m))o.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(o.set(m,!0),c.add(m))}!l&&o.has(m)&&(l=o.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))o.set(n,!0);else{try{super.add(n)}catch{}super.has(n)&&(o.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&&o.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=>o.get(y));else for(let[y,R]of o.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:a}=new URL(e);a==="blob:"?i=e:i=this.sanitize(e,s??{allow:["data","file"]})}if(i){let a=new URL(i),{pathname:o,protocol:c}=a,u=c.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),u){let p=new Map,[n,...m]=o.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 a){let n=a[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:a,only:o}=e;if(Array.isArray(i)&&i.includes("blob")&&!(Array.isArray(a)&&a.includes("blob"))||Array.isArray(o)&&o.includes("blob")){let c;try{c=await fetch(t).then(l=>l.blob()).then(te)}catch{}if(c){if(Array.isArray(o))o.includes("data")||o.push("data");else if(Array.isArray(i)&&(i.includes("data")||i.push("data"),Array.isArray(a)&&a.includes("data"))){let l=a.indexOf("data");a.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{entries:Ht,setPrototypeOf:vt,isFrozen:gn,getPrototypeOf:En,getOwnPropertyDescriptor:Tn}=Object,{freeze:C,seal:U,create:$t}=Object,{apply:Je,construct:et}=typeof Reflect<"u"&&Reflect;C||(C=function(t){return t});U||(U=function(t){return t});Je||(Je=function(t,o,r){return t.apply(o,r)});et||(et=function(t,o){return new t(...o)});var Oe=I(Array.prototype.forEach),It=I(Array.prototype.pop),de=I(Array.prototype.push),Ce=I(String.prototype.toLowerCase),qe=I(String.prototype.toString),Nt=I(String.prototype.match),he=I(String.prototype.replace),_n=I(String.prototype.indexOf),An=I(String.prototype.trim),z=I(Object.prototype.hasOwnProperty),D=I(RegExp.prototype.test),ge=yn(TypeError);function I(n){return function(t){for(var o=arguments.length,r=new Array(o>1?o-1:0),l=1;l<o;l++)r[l-1]=arguments[l];return Je(n,t,r)}}function yn(n){return function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return et(n,o)}}function f(n,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ce;vt&&vt(n,null);let r=t.length;for(;r--;){let l=t[r];if(typeof l=="string"){let c=o(l);c!==l&&(gn(t)||(t[r]=c),l=c)}n[l]=!0}return n}function Rn(n){for(let t=0;t<n.length;t++)z(n,t)||(n[t]=null);return n}function K(n){let t=$t(null);for(let[o,r]of Ht(n))z(n,o)&&(Array.isArray(r)?t[o]=Rn(r):r&&typeof r=="object"&&r.constructor===Object?t[o]=K(r):t[o]=r);return t}function Ee(n,t){for(;n!==null;){let r=Tn(n,t);if(r){if(r.get)return I(r.get);if(typeof r.value=="function")return I(r.value)}n=En(n)}function o(){return null}return o}var Ut=C(["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"]),Ve=C(["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"]),Ke=C(["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"]),bn=C(["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"]),Ze=C(["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=C(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Pt=C(["#text"]),kt=C(["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"]),Qe=C(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Ft=C(["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"]),De=C(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),wn=U(/\{\{[\w\W]*|[\w\W]*\}\}/gm),xn=U(/<%[\w\W]*|[\w\W]*%>/gm),Ln=U(/\$\{[\w\W]*}/gm),On=U(/^data-[\-\w.\u00B7-\uFFFF]+$/),Dn=U(/^aria-[\-\w]+$/),Bt=U(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Cn=U(/^(?:\w+script|data):/i),Mn=U(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Wt=U(/^html$/i),vn=U(/^[a-z][.\w]*(-[.\w]+)+$/i),zt=Object.freeze({__proto__:null,ARIA_ATTR:Dn,ATTR_WHITESPACE:Mn,CUSTOM_ELEMENT:vn,DATA_ATTR:On,DOCTYPE_NAME:Wt,ERB_EXPR:xn,IS_ALLOWED_URI:Bt,IS_SCRIPT_OR_DATA:Cn,MUSTACHE_EXPR:wn,TMPLIT_EXPR:Ln}),Te={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},In=function(){return typeof window>"u"?null:window},Nn=function(t,o){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,l="data-tt-policy-suffix";o&&o.hasAttribute(l)&&(r=o.getAttribute(l));let c="dompurify"+(r?"#"+r:"");try{return t.createPolicy(c,{createHTML(p){return p},createScriptURL(p){return p}})}catch{return console.warn("TrustedTypes policy "+c+" could not be created."),null}},Gt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function jt(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:In(),t=a=>jt(a);if(t.version="3.2.3",t.removed=[],!n||!n.document||n.document.nodeType!==Te.document)return t.isSupported=!1,t;let{document:o}=n,r=o,l=r.currentScript,{DocumentFragment:c,HTMLTemplateElement:p,Node:u,Element:E,NodeFilter:w,NamedNodeMap:h=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:m,DOMParser:T,trustedTypes:B}=n,N=E.prototype,Y=Ee(N,"cloneNode"),le=Ee(N,"remove"),Q=Ee(N,"nextSibling"),P=Ee(N,"childNodes"),k=Ee(N,"parentNode");if(typeof p=="function"){let a=o.createElement("template");a.content&&a.content.ownerDocument&&(o=a.content.ownerDocument)}let d,F="",{implementation:q,createNodeIterator:J,createDocumentFragment:ee,getElementsByTagName:_e}=o,{importNode:v}=r,x=Gt();t.isSupported=typeof Ht=="function"&&typeof k=="function"&&q&&q.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:te,ERB_EXPR:ce,TMPLIT_EXPR:Ae,DATA_ATTR:Pe,ARIA_ATTR:on,IS_SCRIPT_OR_DATA:rn,ATTR_WHITESPACE:at,CUSTOM_ELEMENT:an}=zt,{IS_ALLOWED_URI:lt}=zt,A=null,ct=f({},[...Ut,...Ve,...Ke,...Ze,...Pt]),R=null,pt=f({},[...kt,...Qe,...Ft,...De]),_=Object.seal($t(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}})),pe=null,ke=null,ft=!0,Fe=!0,mt=!1,ut=!0,ne=!1,ze=!0,V=!1,Ge=!1,He=!1,se=!1,ye=!1,Re=!1,dt=!0,ht=!1,ln="user-content-",$e=!0,fe=!1,oe={},re=null,gt=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"]),Et=null,Tt=f({},["audio","video","img","source","image","track"]),Be=null,_t=f({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),be="http://www.w3.org/1998/Math/MathML",Se="http://www.w3.org/2000/svg",W="http://www.w3.org/1999/xhtml",ie=W,We=!1,je=null,cn=f({},[be,Se,W],qe),we=f({},["mi","mo","mn","ms","mtext"]),xe=f({},["annotation-xml"]),pn=f({},["title","style","font","a","script"]),me=null,fn=["application/xhtml+xml","text/html"],mn="text/html",y=null,ae=null,un=o.createElement("form"),At=function(e){return e instanceof RegExp||e instanceof Function},Ye=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ae&&ae===e)){if((!e||typeof e!="object")&&(e={}),e=K(e),me=fn.indexOf(e.PARSER_MEDIA_TYPE)===-1?mn:e.PARSER_MEDIA_TYPE,y=me==="application/xhtml+xml"?qe:Ce,A=z(e,"ALLOWED_TAGS")?f({},e.ALLOWED_TAGS,y):ct,R=z(e,"ALLOWED_ATTR")?f({},e.ALLOWED_ATTR,y):pt,je=z(e,"ALLOWED_NAMESPACES")?f({},e.ALLOWED_NAMESPACES,qe):cn,Be=z(e,"ADD_URI_SAFE_ATTR")?f(K(_t),e.ADD_URI_SAFE_ATTR,y):_t,Et=z(e,"ADD_DATA_URI_TAGS")?f(K(Tt),e.ADD_DATA_URI_TAGS,y):Tt,re=z(e,"FORBID_CONTENTS")?f({},e.FORBID_CONTENTS,y):gt,pe=z(e,"FORBID_TAGS")?f({},e.FORBID_TAGS,y):{},ke=z(e,"FORBID_ATTR")?f({},e.FORBID_ATTR,y):{},oe=z(e,"USE_PROFILES")?e.USE_PROFILES:!1,ft=e.ALLOW_ARIA_ATTR!==!1,Fe=e.ALLOW_DATA_ATTR!==!1,mt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ut=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ne=e.SAFE_FOR_TEMPLATES||!1,ze=e.SAFE_FOR_XML!==!1,V=e.WHOLE_DOCUMENT||!1,se=e.RETURN_DOM||!1,ye=e.RETURN_DOM_FRAGMENT||!1,Re=e.RETURN_TRUSTED_TYPE||!1,He=e.FORCE_BODY||!1,dt=e.SANITIZE_DOM!==!1,ht=e.SANITIZE_NAMED_PROPS||!1,$e=e.KEEP_CONTENT!==!1,fe=e.IN_PLACE||!1,lt=e.ALLOWED_URI_REGEXP||Bt,ie=e.NAMESPACE||W,we=e.MATHML_TEXT_INTEGRATION_POINTS||we,xe=e.HTML_INTEGRATION_POINTS||xe,_=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&At(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(_.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&At(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(_.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(_.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ne&&(Fe=!1),ye&&(se=!0),oe&&(A=f({},Pt),R=[],oe.html===!0&&(f(A,Ut),f(R,kt)),oe.svg===!0&&(f(A,Ve),f(R,Qe),f(R,De)),oe.svgFilters===!0&&(f(A,Ke),f(R,Qe),f(R,De)),oe.mathMl===!0&&(f(A,Ze),f(R,Ft),f(R,De))),e.ADD_TAGS&&(A===ct&&(A=K(A)),f(A,e.ADD_TAGS,y)),e.ADD_ATTR&&(R===pt&&(R=K(R)),f(R,e.ADD_ATTR,y)),e.ADD_URI_SAFE_ATTR&&f(Be,e.ADD_URI_SAFE_ATTR,y),e.FORBID_CONTENTS&&(re===gt&&(re=K(re)),f(re,e.FORBID_CONTENTS,y)),$e&&(A["#text"]=!0),V&&f(A,["html","head","body"]),A.table&&(f(A,["tbody"]),delete pe.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw ge('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ge('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');d=e.TRUSTED_TYPES_POLICY,F=d.createHTML("")}else d===void 0&&(d=Nn(B,l)),d!==null&&typeof F=="string"&&(F=d.createHTML(""));C&&C(e),ae=e}},yt=f({},[...Ve,...Ke,...bn]),Rt=f({},[...Ze,...Sn]),dn=function(e){let s=k(e);(!s||!s.tagName)&&(s={namespaceURI:ie,tagName:"template"});let i=Ce(e.tagName),g=Ce(s.tagName);return je[e.namespaceURI]?e.namespaceURI===Se?s.namespaceURI===W?i==="svg":s.namespaceURI===be?i==="svg"&&(g==="annotation-xml"||we[g]):!!yt[i]:e.namespaceURI===be?s.namespaceURI===W?i==="math":s.namespaceURI===Se?i==="math"&&xe[g]:!!Rt[i]:e.namespaceURI===W?s.namespaceURI===Se&&!xe[g]||s.namespaceURI===be&&!we[g]?!1:!Rt[i]&&(pn[i]||!yt[i]):!!(me==="application/xhtml+xml"&&je[e.namespaceURI]):!1},G=function(e){de(t.removed,{element:e});try{k(e).removeChild(e)}catch{le(e)}},Le=function(e,s){try{de(t.removed,{attribute:s.getAttributeNode(e),from:s})}catch{de(t.removed,{attribute:null,from:s})}if(s.removeAttribute(e),e==="is")if(se||ye)try{G(s)}catch{}else try{s.setAttribute(e,"")}catch{}},bt=function(e){let s=null,i=null;if(He)e="<remove></remove>"+e;else{let b=Nt(e,/^[\r\n\t ]+/);i=b&&b[0]}me==="application/xhtml+xml"&&ie===W&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let g=d?d.createHTML(e):e;if(ie===W)try{s=new T().parseFromString(g,me)}catch{}if(!s||!s.documentElement){s=q.createDocument(ie,"template",null);try{s.documentElement.innerHTML=We?F:g}catch{}}let L=s.body||s.documentElement;return e&&i&&L.insertBefore(o.createTextNode(i),L.childNodes[0]||null),ie===W?_e.call(s,V?"html":"body")[0]:V?s.documentElement:L},St=function(e){return J.call(e.ownerDocument||e,e,w.SHOW_ELEMENT|w.SHOW_COMMENT|w.SHOW_TEXT|w.SHOW_PROCESSING_INSTRUCTION|w.SHOW_CDATA_SECTION,null)},Xe=function(e){return e instanceof m&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof h)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},wt=function(e){return typeof u=="function"&&e instanceof u};function j(a,e,s){Oe(a,i=>{i.call(t,e,s,ae)})}let xt=function(e){let s=null;if(j(x.beforeSanitizeElements,e,null),Xe(e))return G(e),!0;let i=y(e.nodeName);if(j(x.uponSanitizeElement,e,{tagName:i,allowedTags:A}),e.hasChildNodes()&&!wt(e.firstElementChild)&&D(/<[/\w]/g,e.innerHTML)&&D(/<[/\w]/g,e.textContent)||e.nodeType===Te.progressingInstruction||ze&&e.nodeType===Te.comment&&D(/<[/\w]/g,e.data))return G(e),!0;if(!A[i]||pe[i]){if(!pe[i]&&Ot(i)&&(_.tagNameCheck instanceof RegExp&&D(_.tagNameCheck,i)||_.tagNameCheck instanceof Function&&_.tagNameCheck(i)))return!1;if($e&&!re[i]){let g=k(e)||e.parentNode,L=P(e)||e.childNodes;if(L&&g){let b=L.length;for(let M=b-1;M>=0;--M){let H=Y(L[M],!0);H.__removalCount=(e.__removalCount||0)+1,g.insertBefore(H,Q(e))}}}return G(e),!0}return e instanceof E&&!dn(e)||(i==="noscript"||i==="noembed"||i==="noframes")&&D(/<\/no(script|embed|frames)/i,e.innerHTML)?(G(e),!0):(ne&&e.nodeType===Te.text&&(s=e.textContent,Oe([te,ce,Ae],g=>{s=he(s,g," ")}),e.textContent!==s&&(de(t.removed,{element:e.cloneNode()}),e.textContent=s)),j(x.afterSanitizeElements,e,null),!1)},Lt=function(e,s,i){if(dt&&(s==="id"||s==="name")&&(i in o||i in un))return!1;if(!(Fe&&!ke[s]&&D(Pe,s))){if(!(ft&&D(on,s))){if(!R[s]||ke[s]){if(!(Ot(e)&&(_.tagNameCheck instanceof RegExp&&D(_.tagNameCheck,e)||_.tagNameCheck instanceof Function&&_.tagNameCheck(e))&&(_.attributeNameCheck instanceof RegExp&&D(_.attributeNameCheck,s)||_.attributeNameCheck instanceof Function&&_.attributeNameCheck(s))||s==="is"&&_.allowCustomizedBuiltInElements&&(_.tagNameCheck instanceof RegExp&&D(_.tagNameCheck,i)||_.tagNameCheck instanceof Function&&_.tagNameCheck(i))))return!1}else if(!Be[s]){if(!D(lt,he(i,at,""))){if(!((s==="src"||s==="xlink:href"||s==="href")&&e!=="script"&&_n(i,"data:")===0&&Et[e])){if(!(mt&&!D(rn,he(i,at,"")))){if(i)return!1}}}}}}return!0},Ot=function(e){return e!=="annotation-xml"&&Nt(e,an)},Dt=function(e){j(x.beforeSanitizeAttributes,e,null);let{attributes:s}=e;if(!s||Xe(e))return;let i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:R,forceKeepAttr:void 0},g=s.length;for(;g--;){let L=s[g],{name:b,namespaceURI:M,value:H}=L,ue=y(b),O=b==="value"?H:An(H);if(i.attrName=ue,i.attrValue=O,i.keepAttr=!0,i.forceKeepAttr=void 0,j(x.uponSanitizeAttribute,e,i),O=i.attrValue,ht&&(ue==="id"||ue==="name")&&(Le(b,e),O=ln+O),ze&&D(/((--!?|])>)|<\/(style|title)/i,O)){Le(b,e);continue}if(i.forceKeepAttr||(Le(b,e),!i.keepAttr))continue;if(!ut&&D(/\/>/i,O)){Le(b,e);continue}ne&&Oe([te,ce,Ae],Mt=>{O=he(O,Mt," ")});let Ct=y(e.nodeName);if(Lt(Ct,ue,O)){if(d&&typeof B=="object"&&typeof B.getAttributeType=="function"&&!M)switch(B.getAttributeType(Ct,ue)){case"TrustedHTML":{O=d.createHTML(O);break}case"TrustedScriptURL":{O=d.createScriptURL(O);break}}try{M?e.setAttributeNS(M,b,O):e.setAttribute(b,O),Xe(e)?G(e):It(t.removed)}catch{}}}j(x.afterSanitizeAttributes,e,null)},hn=function a(e){let s=null,i=St(e);for(j(x.beforeSanitizeShadowDOM,e,null);s=i.nextNode();)j(x.uponSanitizeShadowNode,s,null),xt(s),Dt(s),s.content instanceof c&&a(s.content);j(x.afterSanitizeShadowDOM,e,null)};return t.sanitize=function(a){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=null,i=null,g=null,L=null;if(We=!a,We&&(a="<!-->"),typeof a!="string"&&!wt(a))if(typeof a.toString=="function"){if(a=a.toString(),typeof a!="string")throw ge("dirty is not a string, aborting")}else throw ge("toString is not a function");if(!t.isSupported)return a;if(Ge||Ye(e),t.removed=[],typeof a=="string"&&(fe=!1),fe){if(a.nodeName){let H=y(a.nodeName);if(!A[H]||pe[H])throw ge("root node is forbidden and cannot be sanitized in-place")}}else if(a instanceof u)s=bt("<!---->"),i=s.ownerDocument.importNode(a,!0),i.nodeType===Te.element&&i.nodeName==="BODY"||i.nodeName==="HTML"?s=i:s.appendChild(i);else{if(!se&&!ne&&!V&&a.indexOf("<")===-1)return d&&Re?d.createHTML(a):a;if(s=bt(a),!s)return se?null:Re?F:""}s&&He&&G(s.firstChild);let b=St(fe?a:s);for(;g=b.nextNode();)xt(g),Dt(g),g.content instanceof c&&hn(g.content);if(fe)return a;if(se){if(ye)for(L=ee.call(s.ownerDocument);s.firstChild;)L.appendChild(s.firstChild);else L=s;return(R.shadowroot||R.shadowrootmode)&&(L=v.call(r,L,!0)),L}let M=V?s.outerHTML:s.innerHTML;return V&&A["!doctype"]&&s.ownerDocument&&s.ownerDocument.doctype&&s.ownerDocument.doctype.name&&D(Wt,s.ownerDocument.doctype.name)&&(M="<!DOCTYPE "+s.ownerDocument.doctype.name+`> | ||
`+M),ne&&Oe([te,ce,Ae],H=>{M=he(M,H," ")}),d&&Re?d.createHTML(M):M},t.setConfig=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ye(a),Ge=!0},t.clearConfig=function(){ae=null,Ge=!1},t.isValidAttribute=function(a,e,s){ae||Ye({});let i=y(a),g=y(e);return Lt(i,g,s)},t.addHook=function(a,e){typeof e=="function"&&de(x[a],e)},t.removeHook=function(a){return It(x[a])},t.removeHooks=function(a){x[a]=[]},t.removeAllHooks=function(){x=Gt()},t}var tt=jt();var Yt=/^[\w+/=-]+$/;var Me=/data:[\w#&+./;=-]*,/,nt=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,Xt=/data:[\w#&+./;=-]*,[^\x22]+/g,qt=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,Vt=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var Kt=/^[a-z][\da-z+.-]*$/,Zt=/^(?:ext|web)\+[a-z]+$/,st=/(?:java|vb)script/,ve=/(?:java|vb)script|blob/,ot=/%(?:22|27|3C|3E)|[\x22\x27<>]/,Qt=/^%[\dA-F]{2}$/i;var $=n=>Object.prototype.toString.call(n).slice(8,-1),S=n=>typeof n=="string"||n instanceof String;var{FileReader:Jt}=globalThis;var Ie=[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 Ne=["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","bluetooth","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-personacard","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","shelter","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 en=n=>{if(!S(n))throw new TypeError(`Expected String but got ${$(n)}.`);let t=[];for(let o of n)t.push(`%${o.charCodeAt(0).toString(16).toUpperCase()}`);return t.join("")},tn=n=>{S(n)&&Qt.test(n)&&(n=n.toUpperCase());let[t,o,r,l,c,p]=["&","#","<",">",'"',"'"].map(en),u;return n===t?u=`${t}amp;`:n===r?u=`${t}lt;`:n===l?u=`${t}gt;`:n===c?u=`${t}quot;`:n===p?u=`${t}${o}39;`:u=n,u},nn=n=>{if(S(n)){if(!Yt.test(n))throw new Error(`Invalid base64 data: ${n}`)}else throw new TypeError(`Expected String but got ${$(n)}.`);let t=atob(n),o=Uint8Array.from([...t].map(c=>c.charCodeAt(0))),r=new Set(Ie),l;return o.every(c=>r.has(c))?l=t.replace(/\s/g,en):l=n,l},rt=(n,t=0)=>{if(!S(n))throw new TypeError(`Expected String but got ${$(n)}.`);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 o=decodeURIComponent(n);if(/&#/.test(o)){let r=new Set(Ie),l=[...o.matchAll(qt)].reverse();for(let c of l){let[p,u]=c,E;if(/^x[\dA-F]+/i.test(u)?E=parseInt(`0${u}`,16):/^\d+/.test(u)&&(E=parseInt(u)),Number.isInteger(E)){let{index:w}=c,[h,m]=[o.substring(0,w),o.substring(w+p.length)];r.has(E)?(o=`${h}${String.fromCharCode(E)}${m}`,(/#x?$/.test(h)||/^#(?:x(?:00)?[2-7]|\d)/.test(m))&&(o=rt(o,++t))):E<16*16&&(o=`${h}${m}`)}}}return o},sn=n=>new Promise((t,o)=>{let r=new Jt;r.addEventListener("error",()=>o(r.error)),r.addEventListener("abort",()=>t(r.result)),r.addEventListener("load",()=>t(r.result)),r.readAsDataURL(n)}),Ue=class{#e;constructor(){this.#e=new Set(Ne)}get(){return[...this.#e]}has(t){return this.#e.has(t)}add(t){if(S(t)){if(st.test(t)||!Kt.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 o;if(S(t))try{let{protocol:r}=new URL(t),l=r.replace(/:$/,""),c=l.split("+");o=!st.test(l)&&Zt.test(l)||c.every(p=>this.#e.has(p))}catch{o=!1}return!!o}reset(){this.#e.clear();for(let t of Ne)this.#e.add(t)}};var it=class extends Ue{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(t){if(!S(t))throw new TypeError(`Expected String but got ${$(t)}.`);let o=t;if(Me.test(o)){let l=[...o.matchAll(Xt)].reverse();for(let c of l){let[p]=c;nt.test(p)&&([p]=nt.exec(p)),this.#e++,this.#t.add(p);let u=this.sanitize(p,{allow:["data"]}),{index:E}=c,[w,h]=[o.substring(0,E),o.substring(E+p.length)];u?o=`${w}${u}${h}`:o=`${w}${h}`}}return o}purify(t){if(!S(t))throw new TypeError(`Expected String but got ${$(t)}.`);let o=tt.sanitize(decodeURIComponent(t));return o&&Me.test(o)&&(o=this.replace(o)),o=o.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(o)}sanitize(t,o){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:l,only:c}=o??{},p=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),u=new Set,E=!1;if(Array.isArray(c)&&c.length){let h=super.get();for(let T of h)p.set(T,!1);let m=Object.values(c);for(let T of m)if(S(T)&&(T=T.trim(),!ve.test(T))){if(super.has(T))p.set(T,!0);else{try{super.add(T)}catch{}super.has(T)&&(p.set(T,!0),u.add(T))}!E&&p.has(T)&&(E=p.get(T))}}else{if(Array.isArray(r)&&r.length){let h=Object.values(r);for(let m of h)if(S(m)&&(m=m.trim(),!ve.test(m)))if(super.has(m))p.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(p.set(m,!0),u.add(m))}}if(Array.isArray(l)&&l.length){let h=Object.values(l);for(let m of h)S(m)&&(m=m.trim(),m&&p.set(m,!1))}}let w;if(super.verify(t)){let{hash:h,href:m,pathname:T,protocol:B,search:N}=new URL(t),Y=B.replace(/:$/,""),le=Y.split("+"),Q;if(E)Q=le.every(P=>p.get(P));else for(let[P,k]of p.entries())if(Q=k||Y!==P&&le.every(d=>d!==P),!Q)break;if(Q){let P=le.includes("data"),k,d=m;if(P){let[F,...q]=T.split(","),J=`${q.join(",")}${N}${h}`,ee=F.split(";"),_e=ee[ee.length-1]==="base64",v=J;_e&&(v=nn(J));try{let te=rt(v).trim(),{protocol:ce}=new URL(te);ce.replace(/:$/,"").split("+").some(Pe=>ve.test(Pe))&&(d="")}catch{}let x=Me.test(v);v!==J||x?x?v=this.replace(v):this.#t.has(t)?this.#t.delete(t):k=!0:this.#t.has(t)?this.#t.delete(t):k=!0,(!F||Vt.test(F))&&(v=this.purify(v)),d&&v?(_e&&v!==J&&ee.pop(),d=`${Y}:${ee.join(";")},${v}`):d=""}else k=!0;if(!P&&ot.test(d)){let F=ot.exec(d),{index:q}=F;d=d.substring(0,q).replace(/[?&]$/,"")}d?(w=d.replace(/%26/g,tn),k&&(this.#e=0)):this.#e=0}u.size&&u.forEach(P=>{super.remove(P)})}return w||null}parse(t,o){if(!S(t))throw new TypeError(`Expected String but got ${$(t)}.`);let r=new Map([["input",t]]),l;if(this.verify(t)){let{protocol:c}=new URL(t);c==="blob:"?l=t:l=this.sanitize(t,o??{allow:["data","file"]})}if(l){let c=new URL(l),{pathname:p,protocol:u}=c,w=u.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),w){let h=new Map,[m,...T]=p.split(","),B=`${T.join(",")}`,N=m.split(";"),Y=N[N.length-1]==="base64";Y&&N.pop(),h.set("mime",N.join(";")),h.set("base64",Y),h.set("data",B),r.set("data",Object.fromEntries(h))}else r.set("data",null);for(let h in c){let m=c[h];S(m)&&r.set(h,m)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}},X=new it,zn=async(n,t={allow:[],deny:[],only:[]})=>{let o;if(n&&S(n)){let r;try{let{protocol:l}=new URL(n);r=l.replace(/:$/,"")}catch{}if(r==="blob"){let{allow:l,deny:c,only:p}=t;if(Array.isArray(l)&&l.includes("blob")&&!(Array.isArray(c)&&c.includes("blob"))||Array.isArray(p)&&p.includes("blob")){let u;try{u=await fetch(n).then(E=>E.blob()).then(sn)}catch{}if(u){if(Array.isArray(p))p.includes("data")||p.push("data");else if(Array.isArray(l)&&(l.includes("data")||l.push("data"),Array.isArray(c)&&c.includes("data"))){let E=c.indexOf("data");c.splice(E,1)}o=X.sanitize(u,t)}}URL.revokeObjectURL(n)}else r&&(o=X.sanitize(n,t))}return o||null},Gn=(n,t)=>{let o;if(n&&S(n)){let r;try{let{protocol:l}=new URL(n);r=l.replace(/:$/,"")}catch{}r==="blob"?URL.revokeObjectURL(n):r&&(o=X.sanitize(n,t))}return o||null},Hn=async n=>X.parse(n),$n=n=>X.parse(n),Bn=async n=>X.verify(n),Wn=n=>X.verify(n),jn=X;export{jn as default,Bn as isURI,Wn as isURISync,Hn as parseURL,$n as parseURLSync,zn as sanitizeURL,Gn as sanitizeURLSync}; | ||
var{entries:Ht,setPrototypeOf:Mt,isFrozen:gn,getPrototypeOf:En,getOwnPropertyDescriptor:Tn}=Object,{freeze:C,seal:U,create:$t}=Object,{apply:Je,construct:et}=typeof Reflect<"u"&&Reflect;C||(C=function(t){return t});U||(U=function(t){return t});Je||(Je=function(t,o,r){return t.apply(o,r)});et||(et=function(t,o){return new t(...o)});var Oe=I(Array.prototype.forEach),_n=I(Array.prototype.lastIndexOf),vt=I(Array.prototype.pop),de=I(Array.prototype.push),An=I(Array.prototype.splice),Ce=I(String.prototype.toLowerCase),qe=I(String.prototype.toString),Nt=I(String.prototype.match),he=I(String.prototype.replace),yn=I(String.prototype.indexOf),Rn=I(String.prototype.trim),z=I(Object.prototype.hasOwnProperty),D=I(RegExp.prototype.test),ge=bn(TypeError);function I(n){return function(t){for(var o=arguments.length,r=new Array(o>1?o-1:0),l=1;l<o;l++)r[l-1]=arguments[l];return Je(n,t,r)}}function bn(n){return function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return et(n,o)}}function f(n,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ce;Mt&&Mt(n,null);let r=t.length;for(;r--;){let l=t[r];if(typeof l=="string"){let c=o(l);c!==l&&(gn(t)||(t[r]=c),l=c)}n[l]=!0}return n}function Sn(n){for(let t=0;t<n.length;t++)z(n,t)||(n[t]=null);return n}function K(n){let t=$t(null);for(let[o,r]of Ht(n))z(n,o)&&(Array.isArray(r)?t[o]=Sn(r):r&&typeof r=="object"&&r.constructor===Object?t[o]=K(r):t[o]=r);return t}function Ee(n,t){for(;n!==null;){let r=Tn(n,t);if(r){if(r.get)return I(r.get);if(typeof r.value=="function")return I(r.value)}n=En(n)}function o(){return null}return o}var Ut=C(["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"]),Ve=C(["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"]),Ke=C(["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"]),wn=C(["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"]),Ze=C(["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"]),xn=C(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Pt=C(["#text"]),kt=C(["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"]),Qe=C(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Ft=C(["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"]),De=C(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Ln=U(/\{\{[\w\W]*|[\w\W]*\}\}/gm),On=U(/<%[\w\W]*|[\w\W]*%>/gm),Dn=U(/\$\{[\w\W]*/gm),Cn=U(/^data-[\-\w.\u00B7-\uFFFF]+$/),In=U(/^aria-[\-\w]+$/),Bt=U(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Mn=U(/^(?:\w+script|data):/i),vn=U(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Wt=U(/^html$/i),Nn=U(/^[a-z][.\w]*(-[.\w]+)+$/i),zt=Object.freeze({__proto__:null,ARIA_ATTR:In,ATTR_WHITESPACE:vn,CUSTOM_ELEMENT:Nn,DATA_ATTR:Cn,DOCTYPE_NAME:Wt,ERB_EXPR:On,IS_ALLOWED_URI:Bt,IS_SCRIPT_OR_DATA:Mn,MUSTACHE_EXPR:Ln,TMPLIT_EXPR:Dn}),Te={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},Pn=function(t,o){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,l="data-tt-policy-suffix";o&&o.hasAttribute(l)&&(r=o.getAttribute(l));let c="dompurify"+(r?"#"+r:"");try{return t.createPolicy(c,{createHTML(p){return p},createScriptURL(p){return p}})}catch{return console.warn("TrustedTypes policy "+c+" could not be created."),null}},Gt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function jt(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Un(),t=a=>jt(a);if(t.version="3.2.4",t.removed=[],!n||!n.document||n.document.nodeType!==Te.document||!n.Element)return t.isSupported=!1,t;let{document:o}=n,r=o,l=r.currentScript,{DocumentFragment:c,HTMLTemplateElement:p,Node:u,Element:E,NodeFilter:x,NamedNodeMap:h=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:m,DOMParser:T,trustedTypes:B}=n,N=E.prototype,Y=Ee(N,"cloneNode"),le=Ee(N,"remove"),Q=Ee(N,"nextSibling"),P=Ee(N,"childNodes"),k=Ee(N,"parentNode");if(typeof p=="function"){let a=o.createElement("template");a.content&&a.content.ownerDocument&&(o=a.content.ownerDocument)}let d,F="",{implementation:q,createNodeIterator:J,createDocumentFragment:ee,getElementsByTagName:_e}=o,{importNode:v}=r,A=Gt();t.isSupported=typeof Ht=="function"&&typeof k=="function"&&q&&q.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:te,ERB_EXPR:ce,TMPLIT_EXPR:Ae,DATA_ATTR:Pe,ARIA_ATTR:on,IS_SCRIPT_OR_DATA:rn,ATTR_WHITESPACE:at,CUSTOM_ELEMENT:an}=zt,{IS_ALLOWED_URI:lt}=zt,y=null,ct=f({},[...Ut,...Ve,...Ke,...Ze,...Pt]),b=null,pt=f({},[...kt,...Qe,...Ft,...De]),_=Object.seal($t(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}})),pe=null,ke=null,ft=!0,Fe=!0,mt=!1,ut=!0,ne=!1,ze=!0,V=!1,Ge=!1,He=!1,se=!1,ye=!1,Re=!1,dt=!0,ht=!1,ln="user-content-",$e=!0,fe=!1,oe={},re=null,gt=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"]),Et=null,Tt=f({},["audio","video","img","source","image","track"]),Be=null,_t=f({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),be="http://www.w3.org/1998/Math/MathML",Se="http://www.w3.org/2000/svg",W="http://www.w3.org/1999/xhtml",ie=W,We=!1,je=null,cn=f({},[be,Se,W],qe),we=f({},["mi","mo","mn","ms","mtext"]),xe=f({},["annotation-xml"]),pn=f({},["title","style","font","a","script"]),me=null,fn=["application/xhtml+xml","text/html"],mn="text/html",R=null,ae=null,un=o.createElement("form"),At=function(e){return e instanceof RegExp||e instanceof Function},Ye=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ae&&ae===e)){if((!e||typeof e!="object")&&(e={}),e=K(e),me=fn.indexOf(e.PARSER_MEDIA_TYPE)===-1?mn:e.PARSER_MEDIA_TYPE,R=me==="application/xhtml+xml"?qe:Ce,y=z(e,"ALLOWED_TAGS")?f({},e.ALLOWED_TAGS,R):ct,b=z(e,"ALLOWED_ATTR")?f({},e.ALLOWED_ATTR,R):pt,je=z(e,"ALLOWED_NAMESPACES")?f({},e.ALLOWED_NAMESPACES,qe):cn,Be=z(e,"ADD_URI_SAFE_ATTR")?f(K(_t),e.ADD_URI_SAFE_ATTR,R):_t,Et=z(e,"ADD_DATA_URI_TAGS")?f(K(Tt),e.ADD_DATA_URI_TAGS,R):Tt,re=z(e,"FORBID_CONTENTS")?f({},e.FORBID_CONTENTS,R):gt,pe=z(e,"FORBID_TAGS")?f({},e.FORBID_TAGS,R):{},ke=z(e,"FORBID_ATTR")?f({},e.FORBID_ATTR,R):{},oe=z(e,"USE_PROFILES")?e.USE_PROFILES:!1,ft=e.ALLOW_ARIA_ATTR!==!1,Fe=e.ALLOW_DATA_ATTR!==!1,mt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ut=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ne=e.SAFE_FOR_TEMPLATES||!1,ze=e.SAFE_FOR_XML!==!1,V=e.WHOLE_DOCUMENT||!1,se=e.RETURN_DOM||!1,ye=e.RETURN_DOM_FRAGMENT||!1,Re=e.RETURN_TRUSTED_TYPE||!1,He=e.FORCE_BODY||!1,dt=e.SANITIZE_DOM!==!1,ht=e.SANITIZE_NAMED_PROPS||!1,$e=e.KEEP_CONTENT!==!1,fe=e.IN_PLACE||!1,lt=e.ALLOWED_URI_REGEXP||Bt,ie=e.NAMESPACE||W,we=e.MATHML_TEXT_INTEGRATION_POINTS||we,xe=e.HTML_INTEGRATION_POINTS||xe,_=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&At(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(_.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&At(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(_.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(_.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ne&&(Fe=!1),ye&&(se=!0),oe&&(y=f({},Pt),b=[],oe.html===!0&&(f(y,Ut),f(b,kt)),oe.svg===!0&&(f(y,Ve),f(b,Qe),f(b,De)),oe.svgFilters===!0&&(f(y,Ke),f(b,Qe),f(b,De)),oe.mathMl===!0&&(f(y,Ze),f(b,Ft),f(b,De))),e.ADD_TAGS&&(y===ct&&(y=K(y)),f(y,e.ADD_TAGS,R)),e.ADD_ATTR&&(b===pt&&(b=K(b)),f(b,e.ADD_ATTR,R)),e.ADD_URI_SAFE_ATTR&&f(Be,e.ADD_URI_SAFE_ATTR,R),e.FORBID_CONTENTS&&(re===gt&&(re=K(re)),f(re,e.FORBID_CONTENTS,R)),$e&&(y["#text"]=!0),V&&f(y,["html","head","body"]),y.table&&(f(y,["tbody"]),delete pe.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw ge('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ge('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');d=e.TRUSTED_TYPES_POLICY,F=d.createHTML("")}else d===void 0&&(d=Pn(B,l)),d!==null&&typeof F=="string"&&(F=d.createHTML(""));C&&C(e),ae=e}},yt=f({},[...Ve,...Ke,...wn]),Rt=f({},[...Ze,...xn]),dn=function(e){let s=k(e);(!s||!s.tagName)&&(s={namespaceURI:ie,tagName:"template"});let i=Ce(e.tagName),g=Ce(s.tagName);return je[e.namespaceURI]?e.namespaceURI===Se?s.namespaceURI===W?i==="svg":s.namespaceURI===be?i==="svg"&&(g==="annotation-xml"||we[g]):!!yt[i]:e.namespaceURI===be?s.namespaceURI===W?i==="math":s.namespaceURI===Se?i==="math"&&xe[g]:!!Rt[i]:e.namespaceURI===W?s.namespaceURI===Se&&!xe[g]||s.namespaceURI===be&&!we[g]?!1:!Rt[i]&&(pn[i]||!yt[i]):!!(me==="application/xhtml+xml"&&je[e.namespaceURI]):!1},G=function(e){de(t.removed,{element:e});try{k(e).removeChild(e)}catch{le(e)}},Le=function(e,s){try{de(t.removed,{attribute:s.getAttributeNode(e),from:s})}catch{de(t.removed,{attribute:null,from:s})}if(s.removeAttribute(e),e==="is")if(se||ye)try{G(s)}catch{}else try{s.setAttribute(e,"")}catch{}},bt=function(e){let s=null,i=null;if(He)e="<remove></remove>"+e;else{let S=Nt(e,/^[\r\n\t ]+/);i=S&&S[0]}me==="application/xhtml+xml"&&ie===W&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let g=d?d.createHTML(e):e;if(ie===W)try{s=new T().parseFromString(g,me)}catch{}if(!s||!s.documentElement){s=q.createDocument(ie,"template",null);try{s.documentElement.innerHTML=We?F:g}catch{}}let L=s.body||s.documentElement;return e&&i&&L.insertBefore(o.createTextNode(i),L.childNodes[0]||null),ie===W?_e.call(s,V?"html":"body")[0]:V?s.documentElement:L},St=function(e){return J.call(e.ownerDocument||e,e,x.SHOW_ELEMENT|x.SHOW_COMMENT|x.SHOW_TEXT|x.SHOW_PROCESSING_INSTRUCTION|x.SHOW_CDATA_SECTION,null)},Xe=function(e){return e instanceof m&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof h)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},wt=function(e){return typeof u=="function"&&e instanceof u};function j(a,e,s){Oe(a,i=>{i.call(t,e,s,ae)})}let xt=function(e){let s=null;if(j(A.beforeSanitizeElements,e,null),Xe(e))return G(e),!0;let i=R(e.nodeName);if(j(A.uponSanitizeElement,e,{tagName:i,allowedTags:y}),e.hasChildNodes()&&!wt(e.firstElementChild)&&D(/<[/\w]/g,e.innerHTML)&&D(/<[/\w]/g,e.textContent)||e.nodeType===Te.progressingInstruction||ze&&e.nodeType===Te.comment&&D(/<[/\w]/g,e.data))return G(e),!0;if(!y[i]||pe[i]){if(!pe[i]&&Ot(i)&&(_.tagNameCheck instanceof RegExp&&D(_.tagNameCheck,i)||_.tagNameCheck instanceof Function&&_.tagNameCheck(i)))return!1;if($e&&!re[i]){let g=k(e)||e.parentNode,L=P(e)||e.childNodes;if(L&&g){let S=L.length;for(let M=S-1;M>=0;--M){let H=Y(L[M],!0);H.__removalCount=(e.__removalCount||0)+1,g.insertBefore(H,Q(e))}}}return G(e),!0}return e instanceof E&&!dn(e)||(i==="noscript"||i==="noembed"||i==="noframes")&&D(/<\/no(script|embed|frames)/i,e.innerHTML)?(G(e),!0):(ne&&e.nodeType===Te.text&&(s=e.textContent,Oe([te,ce,Ae],g=>{s=he(s,g," ")}),e.textContent!==s&&(de(t.removed,{element:e.cloneNode()}),e.textContent=s)),j(A.afterSanitizeElements,e,null),!1)},Lt=function(e,s,i){if(dt&&(s==="id"||s==="name")&&(i in o||i in un))return!1;if(!(Fe&&!ke[s]&&D(Pe,s))){if(!(ft&&D(on,s))){if(!b[s]||ke[s]){if(!(Ot(e)&&(_.tagNameCheck instanceof RegExp&&D(_.tagNameCheck,e)||_.tagNameCheck instanceof Function&&_.tagNameCheck(e))&&(_.attributeNameCheck instanceof RegExp&&D(_.attributeNameCheck,s)||_.attributeNameCheck instanceof Function&&_.attributeNameCheck(s))||s==="is"&&_.allowCustomizedBuiltInElements&&(_.tagNameCheck instanceof RegExp&&D(_.tagNameCheck,i)||_.tagNameCheck instanceof Function&&_.tagNameCheck(i))))return!1}else if(!Be[s]){if(!D(lt,he(i,at,""))){if(!((s==="src"||s==="xlink:href"||s==="href")&&e!=="script"&&yn(i,"data:")===0&&Et[e])){if(!(mt&&!D(rn,he(i,at,"")))){if(i)return!1}}}}}}return!0},Ot=function(e){return e!=="annotation-xml"&&Nt(e,an)},Dt=function(e){j(A.beforeSanitizeAttributes,e,null);let{attributes:s}=e;if(!s||Xe(e))return;let i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:b,forceKeepAttr:void 0},g=s.length;for(;g--;){let L=s[g],{name:S,namespaceURI:M,value:H}=L,ue=R(S),O=S==="value"?H:Rn(H);if(i.attrName=ue,i.attrValue=O,i.keepAttr=!0,i.forceKeepAttr=void 0,j(A.uponSanitizeAttribute,e,i),O=i.attrValue,ht&&(ue==="id"||ue==="name")&&(Le(S,e),O=ln+O),ze&&D(/((--!?|])>)|<\/(style|title)/i,O)){Le(S,e);continue}if(i.forceKeepAttr||(Le(S,e),!i.keepAttr))continue;if(!ut&&D(/\/>/i,O)){Le(S,e);continue}ne&&Oe([te,ce,Ae],It=>{O=he(O,It," ")});let Ct=R(e.nodeName);if(Lt(Ct,ue,O)){if(d&&typeof B=="object"&&typeof B.getAttributeType=="function"&&!M)switch(B.getAttributeType(Ct,ue)){case"TrustedHTML":{O=d.createHTML(O);break}case"TrustedScriptURL":{O=d.createScriptURL(O);break}}try{M?e.setAttributeNS(M,S,O):e.setAttribute(S,O),Xe(e)?G(e):vt(t.removed)}catch{}}}j(A.afterSanitizeAttributes,e,null)},hn=function a(e){let s=null,i=St(e);for(j(A.beforeSanitizeShadowDOM,e,null);s=i.nextNode();)j(A.uponSanitizeShadowNode,s,null),xt(s),Dt(s),s.content instanceof c&&a(s.content);j(A.afterSanitizeShadowDOM,e,null)};return t.sanitize=function(a){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=null,i=null,g=null,L=null;if(We=!a,We&&(a="<!-->"),typeof a!="string"&&!wt(a))if(typeof a.toString=="function"){if(a=a.toString(),typeof a!="string")throw ge("dirty is not a string, aborting")}else throw ge("toString is not a function");if(!t.isSupported)return a;if(Ge||Ye(e),t.removed=[],typeof a=="string"&&(fe=!1),fe){if(a.nodeName){let H=R(a.nodeName);if(!y[H]||pe[H])throw ge("root node is forbidden and cannot be sanitized in-place")}}else if(a instanceof u)s=bt("<!---->"),i=s.ownerDocument.importNode(a,!0),i.nodeType===Te.element&&i.nodeName==="BODY"||i.nodeName==="HTML"?s=i:s.appendChild(i);else{if(!se&&!ne&&!V&&a.indexOf("<")===-1)return d&&Re?d.createHTML(a):a;if(s=bt(a),!s)return se?null:Re?F:""}s&&He&&G(s.firstChild);let S=St(fe?a:s);for(;g=S.nextNode();)xt(g),Dt(g),g.content instanceof c&&hn(g.content);if(fe)return a;if(se){if(ye)for(L=ee.call(s.ownerDocument);s.firstChild;)L.appendChild(s.firstChild);else L=s;return(b.shadowroot||b.shadowrootmode)&&(L=v.call(r,L,!0)),L}let M=V?s.outerHTML:s.innerHTML;return V&&y["!doctype"]&&s.ownerDocument&&s.ownerDocument.doctype&&s.ownerDocument.doctype.name&&D(Wt,s.ownerDocument.doctype.name)&&(M="<!DOCTYPE "+s.ownerDocument.doctype.name+`> | ||
`+M),ne&&Oe([te,ce,Ae],H=>{M=he(M,H," ")}),d&&Re?d.createHTML(M):M},t.setConfig=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ye(a),Ge=!0},t.clearConfig=function(){ae=null,Ge=!1},t.isValidAttribute=function(a,e,s){ae||Ye({});let i=R(a),g=R(e);return Lt(i,g,s)},t.addHook=function(a,e){typeof e=="function"&&de(A[a],e)},t.removeHook=function(a,e){if(e!==void 0){let s=_n(A[a],e);return s===-1?void 0:An(A[a],s,1)[0]}return vt(A[a])},t.removeHooks=function(a){A[a]=[]},t.removeAllHooks=function(){A=Gt()},t}var tt=jt();var Yt=/^[\w+/=-]+$/;var Ie=/data:[\w#&+./;=-]*,/,nt=/data:[\w#&+./;=^]*base64,[\w+/=-]+/i,Xt=/data:[\w#&+./;=-]*,[^\x22]+/g,qt=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,Vt=/^(?:application\/(?:[\w#&.;-]+\+)?x|image\/svg\+x|text\/(?:ht|x))ml;?/;var Kt=/^[a-z][\da-z+.-]*$/,Zt=/^(?:ext|web)\+[a-z]+$/,st=/(?:java|vb)script/,Me=/(?:java|vb)script|blob/,ot=/%(?:22|27|3C|3E)|[\x22\x27<>]/,Qt=/^%[\dA-F]{2}$/i;var $=n=>Object.prototype.toString.call(n).slice(8,-1),w=n=>typeof n=="string"||n instanceof String;var{FileReader:Jt}=globalThis;var ve=[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 Ne=["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","bluetooth","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-personacard","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","shelter","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","teapot","teapots","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 en=n=>{if(!w(n))throw new TypeError(`Expected String but got ${$(n)}.`);let t=[];for(let o of n)t.push(`%${o.charCodeAt(0).toString(16).toUpperCase()}`);return t.join("")},tn=n=>{w(n)&&Qt.test(n)&&(n=n.toUpperCase());let[t,o,r,l,c,p]=["&","#","<",">",'"',"'"].map(en),u;return n===t?u=`${t}amp;`:n===r?u=`${t}lt;`:n===l?u=`${t}gt;`:n===c?u=`${t}quot;`:n===p?u=`${t}${o}39;`:u=n,u},nn=n=>{if(w(n)){if(!Yt.test(n))throw new Error(`Invalid base64 data: ${n}`)}else throw new TypeError(`Expected String but got ${$(n)}.`);let t=atob(n),o=Uint8Array.from([...t].map(c=>c.charCodeAt(0))),r=new Set(ve),l;return o.every(c=>r.has(c))?l=t.replace(/\s/g,en):l=n,l},rt=(n,t=0)=>{if(!w(n))throw new TypeError(`Expected String but got ${$(n)}.`);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 o=decodeURIComponent(n);if(/&#/.test(o)){let r=new Set(ve),l=[...o.matchAll(qt)].reverse();for(let c of l){let[p,u]=c,E;if(/^x[\dA-F]+/i.test(u)?E=parseInt(`0${u}`,16):/^\d+/.test(u)&&(E=parseInt(u)),Number.isInteger(E)){let{index:x}=c,[h,m]=[o.substring(0,x),o.substring(x+p.length)];r.has(E)?(o=`${h}${String.fromCharCode(E)}${m}`,(/#x?$/.test(h)||/^#(?:x(?:00)?[2-7]|\d)/.test(m))&&(o=rt(o,++t))):E<16*16&&(o=`${h}${m}`)}}}return o},sn=n=>new Promise((t,o)=>{let r=new Jt;r.addEventListener("error",()=>o(r.error)),r.addEventListener("abort",()=>t(r.result)),r.addEventListener("load",()=>t(r.result)),r.readAsDataURL(n)}),Ue=class{#e;constructor(){this.#e=new Set(Ne)}get(){return[...this.#e]}has(t){return this.#e.has(t)}add(t){if(w(t)){if(st.test(t)||!Kt.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 o;if(w(t))try{let{protocol:r}=new URL(t),l=r.replace(/:$/,""),c=l.split("+");o=!st.test(l)&&Zt.test(l)||c.every(p=>this.#e.has(p))}catch{o=!1}return!!o}reset(){this.#e.clear();for(let t of Ne)this.#e.add(t)}};var it=class extends Ue{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(t){if(!w(t))throw new TypeError(`Expected String but got ${$(t)}.`);let o=t;if(Ie.test(o)){let l=[...o.matchAll(Xt)].reverse();for(let c of l){let[p]=c;nt.test(p)&&([p]=nt.exec(p)),this.#e++,this.#t.add(p);let u=this.sanitize(p,{allow:["data"]}),{index:E}=c,[x,h]=[o.substring(0,E),o.substring(E+p.length)];u?o=`${x}${u}${h}`:o=`${x}${h}`}}return o}purify(t){if(!w(t))throw new TypeError(`Expected String but got ${$(t)}.`);let o=tt.sanitize(decodeURIComponent(t));return o&&Ie.test(o)&&(o=this.replace(o)),o=o.replace(/(?:#|%23)$/,"").replace(/(?<!(?:#|%23).*)(?:\?|%3F)$/,""),encodeURI(o)}sanitize(t,o){if(this.#e>16)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:l,only:c}=o??{},p=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),u=new Set,E=!1;if(Array.isArray(c)&&c.length){let h=super.get();for(let T of h)p.set(T,!1);let m=Object.values(c);for(let T of m)if(w(T)&&(T=T.trim(),!Me.test(T))){if(super.has(T))p.set(T,!0);else{try{super.add(T)}catch{}super.has(T)&&(p.set(T,!0),u.add(T))}!E&&p.has(T)&&(E=p.get(T))}}else{if(Array.isArray(r)&&r.length){let h=Object.values(r);for(let m of h)if(w(m)&&(m=m.trim(),!Me.test(m)))if(super.has(m))p.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(p.set(m,!0),u.add(m))}}if(Array.isArray(l)&&l.length){let h=Object.values(l);for(let m of h)w(m)&&(m=m.trim(),m&&p.set(m,!1))}}let x;if(super.verify(t)){let{hash:h,href:m,pathname:T,protocol:B,search:N}=new URL(t),Y=B.replace(/:$/,""),le=Y.split("+"),Q;if(E)Q=le.every(P=>p.get(P));else for(let[P,k]of p.entries())if(Q=k||Y!==P&&le.every(d=>d!==P),!Q)break;if(Q){let P=le.includes("data"),k,d=m;if(P){let[F,...q]=T.split(","),J=`${q.join(",")}${N}${h}`,ee=F.split(";"),_e=ee[ee.length-1]==="base64",v=J;_e&&(v=nn(J));try{let te=rt(v).trim(),{protocol:ce}=new URL(te);ce.replace(/:$/,"").split("+").some(Pe=>Me.test(Pe))&&(d="")}catch{}let A=Ie.test(v);v!==J||A?A?v=this.replace(v):this.#t.has(t)?this.#t.delete(t):k=!0:this.#t.has(t)?this.#t.delete(t):k=!0,(!F||Vt.test(F))&&(v=this.purify(v)),d&&v?(_e&&v!==J&&ee.pop(),d=`${Y}:${ee.join(";")},${v}`):d=""}else k=!0;if(!P&&ot.test(d)){let F=ot.exec(d),{index:q}=F;d=d.substring(0,q).replace(/[?&]$/,"")}d?(x=d.replace(/%26/g,tn),k&&(this.#e=0)):this.#e=0}u.size&&u.forEach(P=>{super.remove(P)})}return x||null}parse(t,o){if(!w(t))throw new TypeError(`Expected String but got ${$(t)}.`);let r=new Map([["input",t]]),l;if(this.verify(t)){let{protocol:c}=new URL(t);c==="blob:"?l=t:l=this.sanitize(t,o??{allow:["data","file"]})}if(l){let c=new URL(l),{pathname:p,protocol:u}=c,x=u.replace(/:$/,"").split("+").includes("data");if(r.set("valid",!0),x){let h=new Map,[m,...T]=p.split(","),B=`${T.join(",")}`,N=m.split(";"),Y=N[N.length-1]==="base64";Y&&N.pop(),h.set("mime",N.join(";")),h.set("base64",Y),h.set("data",B),r.set("data",Object.fromEntries(h))}else r.set("data",null);for(let h in c){let m=c[h];w(m)&&r.set(h,m)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}},X=new it,Hn=async(n,t={allow:[],deny:[],only:[]})=>{let o;if(n&&w(n)){let r;try{let{protocol:l}=new URL(n);r=l.replace(/:$/,"")}catch{}if(r==="blob"){let{allow:l,deny:c,only:p}=t;if(Array.isArray(l)&&l.includes("blob")&&!(Array.isArray(c)&&c.includes("blob"))||Array.isArray(p)&&p.includes("blob")){let u;try{u=await fetch(n).then(E=>E.blob()).then(sn)}catch{}if(u){if(Array.isArray(p))p.includes("data")||p.push("data");else if(Array.isArray(l)&&(l.includes("data")||l.push("data"),Array.isArray(c)&&c.includes("data"))){let E=c.indexOf("data");c.splice(E,1)}o=X.sanitize(u,t)}}URL.revokeObjectURL(n)}else r&&(o=X.sanitize(n,t))}return o||null},$n=(n,t)=>{let o;if(n&&w(n)){let r;try{let{protocol:l}=new URL(n);r=l.replace(/:$/,"")}catch{}r==="blob"?URL.revokeObjectURL(n):r&&(o=X.sanitize(n,t))}return o||null},Bn=async n=>X.parse(n),Wn=n=>X.parse(n),jn=async n=>X.verify(n),Yn=n=>X.verify(n),Xn=X;export{Xn as default,jn as isURI,Yn as isURISync,Bn as parseURL,Wn as parseURLSync,Hn as sanitizeURL,$n as sanitizeURLSync}; | ||
/*! | ||
@@ -13,4 +13,4 @@ * URL Sanitizer | ||
dompurify/dist/purify.es.mjs: | ||
(*! @license DOMPurify 3.2.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.3/LICENSE *) | ||
(*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE *) | ||
*/ | ||
//# sourceMappingURL=url-sanitizer.min.js.map |
@@ -19,35 +19,38 @@ { | ||
"exports": { | ||
"import": "./src/index.js", | ||
"browser": "./dist/url-sanitizer.min.js" | ||
"browser": "./dist/url-sanitizer-wo-dompurify.min.js", | ||
"default": { | ||
"types": "./types/index.d.ts", | ||
"default": "./src/index.js" | ||
} | ||
}, | ||
"types": "types/index.d.ts", | ||
"dependencies": { | ||
"dompurify": "^3.2.3", | ||
"jsdom": "^25.0.1" | ||
"dompurify": "^3.2.4", | ||
"jsdom": "^26.0.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.26.0", | ||
"@babel/eslint-parser": "^7.25.9", | ||
"@babel/core": "^7.26.7", | ||
"@babel/eslint-parser": "^7.26.5", | ||
"@babel/plugin-syntax-import-attributes": "^7.26.0", | ||
"@types/jsdom": "^21.1.7", | ||
"@types/node": "^22.10.1", | ||
"c8": "^10.1.2", | ||
"@types/node": "^22.13.0", | ||
"c8": "^10.1.3", | ||
"chai": "^5.1.2", | ||
"commander": "^12.1.0", | ||
"commander": "^13.1.0", | ||
"copyfiles": "^2.4.1", | ||
"csvtojson": "^2.0.10", | ||
"esbuild": "^0.24.0", | ||
"eslint": "^9.16.0", | ||
"eslint-plugin-import-x": "^4.5.0", | ||
"eslint-plugin-jsdoc": "^50.6.0", | ||
"esbuild": "^0.24.2", | ||
"eslint": "^9.19.0", | ||
"eslint-plugin-import-x": "^4.6.1", | ||
"eslint-plugin-jsdoc": "^50.6.3", | ||
"eslint-plugin-regexp": "^2.7.0", | ||
"eslint-plugin-unicorn": "^56.0.1", | ||
"globals": "^15.13.0", | ||
"globals": "^15.14.0", | ||
"http-server": "^14.1.1", | ||
"mocha": "^11.0.1", | ||
"neostandard": "^0.11.9", | ||
"npm-run-all2": "^7.0.1", | ||
"mocha": "^11.1.0", | ||
"neostandard": "^0.12.0", | ||
"npm-run-all2": "^7.0.2", | ||
"sinon": "^19.0.2", | ||
"typescript": "^5.7.2", | ||
"undici": "^7.1.0" | ||
"typescript": "^5.7.3", | ||
"undici": "^7.3.0" | ||
}, | ||
@@ -59,3 +62,3 @@ "scripts": { | ||
"bundle-min-wo-dompurify": "esbuild --format=esm --platform=browser --outfile=dist/url-sanitizer-wo-dompurify.min.js --bundle --minify --sourcemap bundle_wo_dompurify/index.js", | ||
"char": "node modules/index char -i", | ||
"char": "node scripts/index char -i", | ||
"copy": "npm-run-all -s copy-*", | ||
@@ -65,10 +68,10 @@ "copy-src": "copyfiles --up=1 --verbose src/**/* --exclude=src/mjs/dompurify.js --exclude=src/mjs/file-reader.js --exclude=src/mjs/lib-util.js bundle", | ||
"copy-repl": "copyfiles --up=1 --verbose repl/dompurify.js repl/file-reader.js repl/lib-util.js bundle/mjs", | ||
"copy-repl-wo-dompurify": "copyfiles --up=1 --verbose repl/dompurify-global.js repl/file-reader.js repl/lib-util.js bundle_wo_dompurify/mjs && node modules/index rename --oldpath=bundle_wo_dompurify/mjs/dompurify-global.js --newpath=bundle_wo_dompurify/mjs/dompurify.js -i", | ||
"include": "node modules/index include --dir=iana -i", | ||
"copy-repl-wo-dompurify": "copyfiles --up=1 --verbose repl/dompurify-global.js repl/file-reader.js repl/lib-util.js bundle_wo_dompurify/mjs && node scripts/index rename --oldpath=bundle_wo_dompurify/mjs/dompurify-global.js --newpath=bundle_wo_dompurify/mjs/dompurify.js -i", | ||
"include": "node scripts/index include --dir=iana -i", | ||
"lint": "eslint --fix .", | ||
"test": "c8 --reporter=text mocha --exit test/*.test.js", | ||
"test-bdd": "http-server ./ -c-1 -o test/bdd/url-sanitizer.test.html", | ||
"tsc": "node modules/index clean --dir=types -i && npx tsc" | ||
"tsc": "node scripts/index clean --dir=types -i && npx tsc" | ||
}, | ||
"version": "2.0.6" | ||
"version": "2.0.7" | ||
} |
@@ -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","bluetooth","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-personacard","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","shelter","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","bluetooth","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-personacard","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","shelter","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","teapot","teapots","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"] |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
281403
+ Addedjsdom@26.0.0(transitive)
+ Addedwhatwg-url@14.1.0(transitive)
- Removedjsdom@25.0.1(transitive)
- Removedrrweb-cssom@0.7.1(transitive)
- Removedwhatwg-url@14.1.1(transitive)
Updateddompurify@^3.2.4
Updatedjsdom@^26.0.0