Socket
Socket
Sign inDemoInstall

@adraffy/ens-normalize

Package Overview
Dependencies
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@adraffy/ens-normalize - npm Package Compare versions

Comparing version 1.5.2 to 1.5.3

2

dist/all.min.js

@@ -1,1 +0,1 @@

function A(A){return 1&A?~A>>1:A>>1}function t(A,t){let e=Array(A);for(let n=0,o=-1;n<A;n++)e[n]=o+=1+t();return e}function e(t,e){let n=Array(t);for(let o=0,r=0;o<t;o++)n[o]=r+=A(e());return n}function n(A,e){let n=t(A(),A),o=A(),r=t(o,A),g=function(A,t){let e=Array(A);for(let n=0;n<A;n++)e[n]=1+t();return e}(o,A);for(let A=0;A<o;A++)for(let t=0;t<g[A];t++)n.push(r[A]+t);return e?n.map((A=>e[A])):n}function o(A,t,n,o){let r=Array(A).fill().map((()=>[]));for(let g=0;g<t;g++)e(A,n).forEach(((A,t)=>r[t].push(o?o(A):A)));return r}function r(A,t){let e=1+t(),n=t(),r=function(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(e)}return t}(t);return o(r.length,1+A,t).flatMap(((A,t)=>{let[o,...g]=A;return Array(r[t]).fill().map(((A,t)=>{let r=t*n;return[o+t*e,g.map((A=>A+r))]}))}))}function g(A,t){return o(1+t(),1+A,t).map((A=>[A[0],A.slice(1)]))}var l=function(A){let t=0;return()=>A[t++]}(function(A){let t=0;function e(){return A[t++]<<8|A[t++]}let n=e(),o=1,r=[0,1];for(let A=1;A<n;A++)r.push(o+=e());let g=e(),l=t;t+=g;let s=0,i=0;function a(){return 0==s&&(i=i<<8|A[t++],s=8),i>>--s&1}const c=2**31,w=c>>>1,p=c-1;let B=0;for(let A=0;A<31;A++)B=B<<1|a();let C=[],d=0,f=c;for(;;){let A=Math.floor(((B-d+1)*o-1)/f),t=0,e=n;for(;e-t>1;){let n=t+e>>>1;A<r[n]?e=n:t=n}if(0==t)break;C.push(t);let g=d+Math.floor(f*r[t]/o),l=d+Math.floor(f*r[t+1]/o)-1;for(;0==((g^l)&w);)B=B<<1&p|a(),g=g<<1&p,l=l<<1&p|1;for(;g&~l&536870912;)B=B&w|B<<1&p>>>1|a(),g=g<<1^w,l=(l^w)<<1|w|1;d=g,f=1+l-g}let u=n-4;return C.map((t=>{switch(t-u){case 3:return u+65792+(A[l++]<<16|A[l++]<<8|A[l++]);case 2:return u+256+(A[l++]<<8|A[l++]);case 1:return u+A[l++];default:return t-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))));const s=new Set(n(l)),i=new Set(n(l)),a=function(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(r(e,A))}for(;;){let e=A()-1;if(e<0)break;t.push(g(e,A))}return Object.fromEntries(t.flat())}(l),c=function(A){let t=n(A).sort(((A,t)=>A-t));return function e(){let o=[];for(;;){let r=n(A);if(0==r.length)break;o.push({set:new Set(r.map((A=>t[A]))),node:e()})}o.sort(((A,t)=>t.set.size-A.set.size));let r=A();return{branches:o,valid:0!=(1&r),fe0f:0!=(2&r),save:0!=(4&r),check:0!=(8&r)}}()}(l),w=new Set(n(l,[...s].sort(((A,t)=>A-t))));function p(A){return A.normalize("NFC")}function B(A){return[...A].map((A=>A.codePointAt(0)))}function C(A){return A.filter((A=>65039!=A))}function d(A,t=!1){let e=[...A].map((A=>A.codePointAt(0))).reverse(),n=[];for(;e.length;){let A=f(e,c);if(A){n.push(...t?A:C(A));continue}let o=e.pop();if(s.has(o)){n.push(o);continue}if(i.has(o))continue;let r=a[o];if(!r)throw new Error(`Disallowed codepoint: 0x${o.toString(16).toUpperCase()}`);n.push(...r)}return p(String.fromCodePoint(...n))}function f(A,t,e){let n,o=[],r=A.length;for(e&&(e.length=0);r;){let g=A[--r];if(t=t.branches.find((A=>A.set.has(g)))?.node,!t)break;o.push(g),t.fe0f&&(o.push(65039),r>0&&65039==A[r-1]&&r--),t.valid&&(n=o.slice(),e?.push(...A.slice(r).reverse()),A.length=r)}return n}function u(A){let t=B(A).reverse(),e=[],n=[];for(;t.length;){let A=f(t,c,e);if(A)n.push({type:"emoji",emoji:A,input:e,cps:C(A)});else{let A=t.pop();if(46===A)n.push({type:"stop"});else if(s.has(A))n.push({type:"valid",cps:[A]});else if(i.has(A))n.push({type:"ignored",cp:A});else{let t=a[A];t?n.push({type:"mapped",cp:A,cps:t}):n.push({type:"disallowed",cp:A})}}}for(let A=0,t=-1;A<n.length;A++){let e=n[A];if(h(e.type))if(E(e.cps)){let e=A+1;for(let A=e;A<n.length;A++){let{type:t,cps:o}=n[A];if(h(t)){if(!E(o))break;e=A+1}else if("ignored"!==t||"disallowed"!==t)break}t<0&&(t=A);let o=n.slice(t,e),r=o.flatMap((A=>h(A.type)?A.cps:[])),g=String.fromCodePoint(...r),l=p(g);g===l?A=e-1:(n.splice(t,e-t,{type:"nfc",input:r,cps:B(l),tokens:M(o)}),A=t),t=-1}else t=A;else"emoji"===e.type&&(t=-1)}return M(n)}function h(A){return"valid"===A||"mapped"===A}function E(A){return A.some((A=>w.has(A)))}function M(A){for(let t=0;t<A.length;t++)if("valid"===A[t].type){let e=t+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(t,e-t,{type:"valid",cps:A.slice(t,e).flatMap((A=>A.cps))})}return A}function Q(A){return A.toString(16).toUpperCase()}function I(A){return`{${Q(A)}}`}function D(A){return[...A].map((A=>A.codePointAt(0)))}function m(A,t=I){return A.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u{E0020}-\u{E007F}])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,((A,e,n)=>e?t(e.codePointAt(0)):`&#${n.codePointAt(0)}`))}function x(A){return A.replace(/[^\x21\x23-\x7A\x7C\x7E]/gu,(A=>I(A.codePointAt(0))))}function y(A){return/^[\x21-\x7E]+$/gu.test(A)}function F(A,t,e={}){for(let n of A){let A=t(n),o=e[A];o||(o=e[A]=[]),o.push(n)}return e}function k(A,t){let e=0,n=[];for(let o=1;o<A.length;o++)t(A[o-1],A[o])&&(n.push(A.slice(e,o)),e=o);return e<A.length&&n.push(A.slice(e)),n}function K(A,t,e){let n=[];A=A.map((A=>A.slice()));for(let o=0;o<A.length;o++){let r=A[o],[g,l]=r;if(-1==g)continue;let s=[r];A:for(let n=o+1;n<A.length;n++){let o=A[n],[r,i]=o;if(-1==r)continue;let a=g+s.length*t;if(!(r<a)){if(r>a)break;for(let A=0;A<l.length;A++)if(l[A]+s.length*e!=i[A])continue A;s.push(o)}}s.length>1&&(s.forEach((A=>A[0]=-1)),n.push([g,s.length,l]))}return{linear:n,nonlinear:A.filter((A=>A[0]>=0))}}function H(A,t){let{length:e}=A,n=e-t.length;for(let o=0;0==n&&o<e;o++)n=A[o]-t[o];return n}function Y(A){return A<26?97+A:22+A}function b(A,t){let e=A-t;return e<=0?1:e>=26?26:e}function G(A,t,e){A=Math.floor(A/(e?700:2)),A+=Math.floor(A/t);let n=0;for(;A>455;)A=Math.floor(A/35),n+=36;return n+Math.floor(36*A/(A+38))}const U=new Set(D("-.0123456789abcdefghijklmnopqrstuvwxyz"));function L(A){let t=0;return A.split(".").map(((A,e)=>{if(e>0&&t++,!A)return"";let n=D(A),o=function(A){if(!Array.isArray(A)||!A.every((A=>Number.isSafeInteger(A)&&A>=0&&A<=1114111)))throw new TypeError("expected array of Unicode codepoints");let t=A.filter((A=>A<128)),e=t.length;if(e==A.length)return A;e&&t.push(45);let n=128,o=72,r=0,g=e;for(;g<A.length;){let l=A.reduce(((A,t)=>t>=n&&t<A?t:A),1114111);r+=(l-n)*(g+1);for(let n of A)if(n<l)r++;else if(n==l){let A=r;for(let e=36;;e+=36){let n=b(e,o),r=A-n;if(r<0)break;let g=36-n;t.push(Y(n+r%g)),A=Math.floor(r/g)}t.push(Y(A)),o=G(r,g+1,g==e),r=0,g++}r++,n=l+1}return t}(n);try{for(let A of o)if(!U.has(A))throw new Error(`invalid ASCII: "${x(String.fromCodePoint(A))}"`);if(t+=o.length,o===n){if(A.startsWith("xn--"))throw new Error("punycode literal");if("--"===A.slice(2,4))throw Error("invalid label extension");if(A.startsWith("-"))throw Error("leading hyphen");if(A.endsWith("-"))throw Error("trailing hyphen")}else t+=4,A="xn--"+String.fromCodePoint(...o);if(A.length>63)throw new Error("too long")}catch(t){throw new Error(`Invalid label "${x(A)}": ${t.message}`)}if(t>253)throw new Error("Name too long");return A})).join(".")}function O(A){return m(String.fromCodePoint(...A),(A=>8204==A?'<span class="mod zwj">ZWNJ</span>':8205==A?'<span class="mod zwj">ZWJ</span>':`<code>${Q(A)}</code>`))}function S(A){return`Hex: 0x${A.map(Q).join(" ")}\nDec: ${A.join(" ")}`}function N(){let A=document.createElement("span");return A.classList.add("arrow"),A.innerHTML="🡆",A}function T(A,t){let e=document.createElement("div");return e.classList.add("tokens"),t&&(A=A.flatMap((A=>"nfc"===A.type?A.tokens:A))),e.append(...A.flatMap((A=>{let e;if("emoji"===A.type){let n=t?A.input:A.cps;e=document.createElement("a"),e.href=`https://emojipedia.org/${String.fromCodePoint(...A.emoji)}`,e.classList.add("glyph"),e.append(...n.map(((A,t)=>{let e=document.createElement("span");if(8205==A)e.classList.add("mod","zwj"),e.innerHTML="ZWJ";else if(65039==A)e.classList.add("mod","dropped","style"),e.innerHTML="FE0F";else if(8419==A)e.classList.add("mod","keycap"),e.innerHTML="Keycap";else if(A>=917536&&A<=917631){A-=917504;let t=String.fromCodePoint(A);127===A?(e.classList.add("mod"),e.innerHTML="TagEnd"):(y(t)?e.innerHTML=t:(e=document.createElement("code"),e.innerHTML=Q(A)),e.classList.add("mod","tag"))}else e.classList.add("emoji"),e.innerHTML=String.fromCodePoint(A);return e})))}else if("nfc"===A.type){e=document.createElement("div"),e.classList.add("nfc");let t=T(A.tokens,!1);t.classList.add("before");let n=document.createElement("div");n.classList.add("valid"),n.innerHTML=O(A.cps),n.title=S(A.cps),e.append(t,N(),n)}else if(e=document.createElement("div"),"valid"===A.type)e.classList.add("valid"),e.innerHTML=O(A.cps),e.title=S(A.cps);else if("mapped"===A.type){e.classList.add("mapped");let n=document.createElement("span");n.classList.add("before"),n.innerHTML=O([A.cp]),n.title=S([A.cp]),e.append(n),t||e.append(N(),...A.cps.map((A=>{let t=document.createElement("span");return t.innerHTML=O([A]),t.title=S([A]),t})))}else if("ignored"===A.type)e=document.createElement("code"),e.innerHTML=Q(A.cp),e.title=S([A.cp]),e.classList.add("ignored");else if("disallowed"===A.type)e.classList.add("disallowed"),e.innerHTML=O([A.cp]),e.title=S([A.cp]);else{if("stop"!==A.type)throw new TypeError(`unknown token type: ${A.type}`);e.classList.add("stop"),e.innerHTML="."}return e}))),e}function v(){let A=document.createElement("style");A.innerText="\n\t.tokens {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 2px;\n\t}\n\t.tokens > * {\n\t\tpadding: 2px 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\t.tokens a {\n\t\ttext-decoration: none;\n\t}\n\t.tokens a:hover {\n\t\toutline: 2px solid #00f;\n\t}\n\t.tokens .valid {\n\t\tborder-radius: 5px;\n\t\tbackground: #cfc;\n\t\tborder: 2px solid #0a0;\n\t\tline-break: anywhere;\n\t}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #f66;\t\n\t}\n\t.tokens .mapped {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #66f;\n\t\tbackground: #ccf;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mapped span:first-child {\n\t\tmargin-bottom: -4px;\n\t\tborder-bottom: 4px solid #000;\n\t}\n\t.tokens .stop {\n\t\tfont-weight: bold;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 0.5rem;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tbackground: #333;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .mod.tag {\n\t\tbackground: #33f;\n\t}\n\t.tokens .mod.dropped {\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens .arrow {\n\t\tcolor: rgba(0, 0, 0, 0.35);\n\t}\n\t.tokens .nfc {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #fa0;\n\t\tbackground: #fd8;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens code {\n\t\tfont-size: 90%;\n\t\tpadding: 2px;\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t\tbackground: rgba(0, 0, 0, .3);\n\t\talign-self: center;\n\t}",document.body.append(A)}export{H as compare_arrays,L as dns_from_normalized_ens,T as dom_from_tokens,d as ens_normalize,u as ens_tokenize,m as escape_for_html,x as escape_unicode,D as explode_cp,F as group_by,Q as hex_cp,y as is_printable_ascii,I as quote_cp,k as split_between,K as split_linear,v as use_default_style};
function A(A){return 1&A?~A>>1:A>>1}function t(A,t){let e=Array(A);for(let n=0,o=-1;n<A;n++)e[n]=o+=1+t();return e}function e(t,e){let n=Array(t);for(let o=0,r=0;o<t;o++)n[o]=r+=A(e());return n}function n(A,e){let n=t(A(),A),o=A(),r=t(o,A),g=function(A,t){let e=Array(A);for(let n=0;n<A;n++)e[n]=1+t();return e}(o,A);for(let A=0;A<o;A++)for(let t=0;t<g[A];t++)n.push(r[A]+t);return e?n.map((A=>e[A])):n}function o(A,t,n,o){let r=Array(A).fill().map((()=>[]));for(let g=0;g<t;g++)e(A,n).forEach(((A,t)=>r[t].push(o?o(A):A)));return r}function r(A,t){let e=1+t(),n=t(),r=function(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(e)}return t}(t);return o(r.length,1+A,t).flatMap(((A,t)=>{let[o,...g]=A;return Array(r[t]).fill().map(((A,t)=>{let r=t*n;return[o+t*e,g.map((A=>A+r))]}))}))}function g(A,t){return o(1+t(),1+A,t).map((A=>[A[0],A.slice(1)]))}var l=function(A){let t=0;return()=>A[t++]}(function(A){let t=0;function e(){return A[t++]<<8|A[t++]}let n=e(),o=1,r=[0,1];for(let A=1;A<n;A++)r.push(o+=e());let g=e(),l=t;t+=g;let s=0,i=0;function a(){return 0==s&&(i=i<<8|A[t++],s=8),i>>--s&1}const c=2**31,w=c>>>1,p=c-1;let B=0;for(let A=0;A<31;A++)B=B<<1|a();let C=[],d=0,f=c;for(;;){let A=Math.floor(((B-d+1)*o-1)/f),t=0,e=n;for(;e-t>1;){let n=t+e>>>1;A<r[n]?e=n:t=n}if(0==t)break;C.push(t);let g=d+Math.floor(f*r[t]/o),l=d+Math.floor(f*r[t+1]/o)-1;for(;0==((g^l)&w);)B=B<<1&p|a(),g=g<<1&p,l=l<<1&p|1;for(;g&~l&536870912;)B=B&w|B<<1&p>>>1|a(),g=g<<1^w,l=(l^w)<<1|w|1;d=g,f=1+l-g}let u=n-4;return C.map((t=>{switch(t-u){case 3:return u+65792+(A[l++]<<16|A[l++]<<8|A[l++]);case 2:return u+256+(A[l++]<<8|A[l++]);case 1:return u+A[l++];default:return t-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))));const s=new Set(n(l)),i=new Set(n(l)),a=function(A){let t=[];for(;;){let e=A();if(0==e)break;t.push(r(e,A))}for(;;){let e=A()-1;if(e<0)break;t.push(g(e,A))}return Object.fromEntries(t.flat())}(l),c=function(A){let t=n(A).sort(((A,t)=>A-t));return function e(){let o=[];for(;;){let r=n(A);if(0==r.length)break;o.push({set:new Set(r.map((A=>t[A]))),node:e()})}o.sort(((A,t)=>t.set.size-A.set.size));let r=A();return{branches:o,valid:0!=(1&r),fe0f:0!=(2&r),save:0!=(4&r),check:0!=(8&r)}}()}(l),w=new Set(n(l,[...s].sort(((A,t)=>A-t))));function p(A){return A.normalize("NFC")}function B(A){return[...A].map((A=>A.codePointAt(0)))}function C(A){return A.filter((A=>65039!=A))}function d(A,t=!1){let e=[...A].map((A=>A.codePointAt(0))).reverse(),n=[];for(;e.length;){let A=f(e,c);if(A){n.push(...t?A:C(A));continue}let o=e.pop();if(s.has(o)){n.push(o);continue}if(i.has(o))continue;let r=a[o];if(!r)throw new Error(`Disallowed codepoint: 0x${o.toString(16).toUpperCase()}`);n.push(...r)}return p(String.fromCodePoint(...n))}function f(A,t,e){let n,o=[],r=A.length;for(e&&(e.length=0);r;){let g=A[--r];if(t=t.branches.find((A=>A.set.has(g)))?.node,!t)break;o.push(g),t.fe0f&&(o.push(65039),r>0&&65039==A[r-1]&&r--),t.valid&&(n=o.slice(),e&&e.push(...A.slice(r).reverse()),A.length=r)}return n}function u(A){let t=B(A).reverse(),e=[],n=[];for(;t.length;){let A=f(t,c,e);if(A)n.push({type:"emoji",emoji:A,input:e.slice(),cps:C(A)});else{let A=t.pop();if(46===A)n.push({type:"stop"});else if(s.has(A))n.push({type:"valid",cps:[A]});else if(i.has(A))n.push({type:"ignored",cp:A});else{let t=a[A];t?n.push({type:"mapped",cp:A,cps:t}):n.push({type:"disallowed",cp:A})}}}for(let A=0,t=-1;A<n.length;A++){let e=n[A];if(h(e.type))if(E(e.cps)){let e=A+1;for(let A=e;A<n.length;A++){let{type:t,cps:o}=n[A];if(h(t)){if(!E(o))break;e=A+1}else if("ignored"!==t||"disallowed"!==t)break}t<0&&(t=A);let o=n.slice(t,e),r=o.flatMap((A=>h(A.type)?A.cps:[])),g=String.fromCodePoint(...r),l=p(g);g===l?A=e-1:(n.splice(t,e-t,{type:"nfc",input:r,cps:B(l),tokens:M(o)}),A=t),t=-1}else t=A;else"emoji"===e.type&&(t=-1)}return M(n)}function h(A){return"valid"===A||"mapped"===A}function E(A){return A.some((A=>w.has(A)))}function M(A){for(let t=0;t<A.length;t++)if("valid"===A[t].type){let e=t+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(t,e-t,{type:"valid",cps:A.slice(t,e).flatMap((A=>A.cps))})}return A}function Q(A){return A.toString(16).toUpperCase()}function I(A){return`{${Q(A)}}`}function D(A){return[...A].map((A=>A.codePointAt(0)))}function m(A,t=I){return A.replace(/(?:([\x00-\x20\x7F\xA0\s\u200C\u200D\u{E0020}-\u{E007F}])|([^\x21-\x25\x27-\x3B\x3D\x3F-\x7E]))/gu,((A,e,n)=>e?t(e.codePointAt(0)):`&#${n.codePointAt(0)}`))}function x(A){return A.replace(/[^\x21\x23-\x7A\x7C\x7E]/gu,(A=>I(A.codePointAt(0))))}function y(A){return/^[\x21-\x7E]+$/gu.test(A)}function F(A,t,e={}){for(let n of A){let A=t(n),o=e[A];o||(o=e[A]=[]),o.push(n)}return e}function k(A,t){let e=0,n=[];for(let o=1;o<A.length;o++)t(A[o-1],A[o])&&(n.push(A.slice(e,o)),e=o);return e<A.length&&n.push(A.slice(e)),n}function K(A,t,e){let n=[];A=A.map((A=>A.slice()));for(let o=0;o<A.length;o++){let r=A[o],[g,l]=r;if(-1==g)continue;let s=[r];A:for(let n=o+1;n<A.length;n++){let o=A[n],[r,i]=o;if(-1==r)continue;let a=g+s.length*t;if(!(r<a)){if(r>a)break;for(let A=0;A<l.length;A++)if(l[A]+s.length*e!=i[A])continue A;s.push(o)}}s.length>1&&(s.forEach((A=>A[0]=-1)),n.push([g,s.length,l]))}return{linear:n,nonlinear:A.filter((A=>A[0]>=0))}}function H(A,t){let{length:e}=A,n=e-t.length;for(let o=0;0==n&&o<e;o++)n=A[o]-t[o];return n}function Y(A){return A<26?97+A:22+A}function b(A,t){let e=A-t;return e<=0?1:e>=26?26:e}function G(A,t,e){A=Math.floor(A/(e?700:2)),A+=Math.floor(A/t);let n=0;for(;A>455;)A=Math.floor(A/35),n+=36;return n+Math.floor(36*A/(A+38))}const U=new Set(D("-.0123456789abcdefghijklmnopqrstuvwxyz"));function L(A){let t=0;return A.split(".").map(((A,e)=>{if(e>0&&t++,!A)return"";let n=D(A),o=function(A){if(!Array.isArray(A)||!A.every((A=>Number.isSafeInteger(A)&&A>=0&&A<=1114111)))throw new TypeError("expected array of Unicode codepoints");let t=A.filter((A=>A<128)),e=t.length;if(e==A.length)return A;e&&t.push(45);let n=128,o=72,r=0,g=e;for(;g<A.length;){let l=A.reduce(((A,t)=>t>=n&&t<A?t:A),1114111);r+=(l-n)*(g+1);for(let n of A)if(n<l)r++;else if(n==l){let A=r;for(let e=36;;e+=36){let n=b(e,o),r=A-n;if(r<0)break;let g=36-n;t.push(Y(n+r%g)),A=Math.floor(r/g)}t.push(Y(A)),o=G(r,g+1,g==e),r=0,g++}r++,n=l+1}return t}(n);try{for(let A of o)if(!U.has(A))throw new Error(`invalid ASCII: "${x(String.fromCodePoint(A))}"`);if(t+=o.length,o===n){if(A.startsWith("xn--"))throw new Error("punycode literal");if("--"===A.slice(2,4))throw Error("invalid label extension");if(A.startsWith("-"))throw Error("leading hyphen");if(A.endsWith("-"))throw Error("trailing hyphen")}else t+=4,A="xn--"+String.fromCodePoint(...o);if(A.length>63)throw new Error("too long")}catch(t){throw new Error(`Invalid label "${x(A)}": ${t.message}`)}if(t>253)throw new Error("Name too long");return A})).join(".")}function O(A){return m(String.fromCodePoint(...A),(A=>8204==A?'<span class="mod zwj">ZWNJ</span>':8205==A?'<span class="mod zwj">ZWJ</span>':`<code>${Q(A)}</code>`))}function S(A){return`Hex: 0x${A.map(Q).join(" ")}\nDec: ${A.join(" ")}`}function N(){let A=document.createElement("span");return A.classList.add("arrow"),A.innerHTML="🡆",A}function T(A,t){let e=document.createElement("div");return e.classList.add("tokens"),t&&(A=A.flatMap((A=>"nfc"===A.type?A.tokens:A))),e.append(...A.flatMap((A=>{let e;if("emoji"===A.type){let n=t?A.input:A.cps;e=document.createElement("a"),e.href=`https://emojipedia.org/${String.fromCodePoint(...A.emoji)}`,e.classList.add("glyph"),e.append(...n.map(((A,t)=>{let e=document.createElement("span");if(8205==A)e.classList.add("mod","zwj"),e.innerHTML="ZWJ";else if(65039==A)e.classList.add("mod","dropped","style"),e.innerHTML="FE0F";else if(8419==A)e.classList.add("mod","keycap"),e.innerHTML="Keycap";else if(A>=917536&&A<=917631){A-=917504;let t=String.fromCodePoint(A);127===A?(e.classList.add("mod"),e.innerHTML="TagEnd"):(y(t)?e.innerHTML=t:(e=document.createElement("code"),e.innerHTML=Q(A)),e.classList.add("mod","tag"))}else e.classList.add("emoji"),e.innerHTML=String.fromCodePoint(A);return e})))}else if("nfc"===A.type){e=document.createElement("div"),e.classList.add("nfc");let t=T(A.tokens,!1);t.classList.add("before");let n=document.createElement("div");n.classList.add("valid"),n.innerHTML=O(A.cps),n.title=S(A.cps),e.append(t,N(),n)}else if(e=document.createElement("div"),"valid"===A.type)e.classList.add("valid"),e.innerHTML=O(A.cps),e.title=S(A.cps);else if("mapped"===A.type){e.classList.add("mapped");let n=document.createElement("span");n.classList.add("before"),n.innerHTML=O([A.cp]),n.title=S([A.cp]),e.append(n),t||e.append(N(),...A.cps.map((A=>{let t=document.createElement("span");return t.innerHTML=O([A]),t.title=S([A]),t})))}else if("ignored"===A.type)e=document.createElement("code"),e.innerHTML=Q(A.cp),e.title=S([A.cp]),e.classList.add("ignored");else if("disallowed"===A.type)e.classList.add("disallowed"),e.innerHTML=O([A.cp]),e.title=S([A.cp]);else{if("stop"!==A.type)throw new TypeError(`unknown token type: ${A.type}`);e.classList.add("stop"),e.innerHTML="."}return e}))),e}function v(){let A=document.createElement("style");A.innerText="\n\t.tokens {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 2px;\n\t}\n\t.tokens > * {\n\t\tpadding: 2px 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t}\n\t.tokens a {\n\t\ttext-decoration: none;\n\t}\n\t.tokens a:hover {\n\t\toutline: 2px solid #00f;\n\t}\n\t.tokens .valid {\n\t\tborder-radius: 5px;\n\t\tbackground: #cfc;\n\t\tborder: 2px solid #0a0;\n\t\tline-break: anywhere;\n\t}\n\t.tokens .ignored {\n\t\tcolor: #fff;\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens .disallowed {\n\t\tbackground: #f66;\t\n\t}\n\t.tokens .mapped {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #66f;\n\t\tbackground: #ccf;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mapped span:first-child {\n\t\tmargin-bottom: -4px;\n\t\tborder-bottom: 4px solid #000;\n\t}\n\t.tokens .stop {\n\t\tfont-weight: bold;\n\t}\n\t.tokens .glyph {\n\t\tborder: 2px solid #0aa;\n\t\tborder-radius: 0.5rem;\n\t\tbackground: #cff;\n\t}\n\t.tokens .mod {\n\t\tfont-size: 70%;\n\t\tpadding: 2px;\n\t\tbackground: #333;\n\t\tcolor: #fff;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens .mod.zwj {\n\t\tbackground: #0aa;\n\t}\n\t.tokens .mod.tag {\n\t\tbackground: #33f;\n\t}\n\t.tokens .mod.dropped {\n\t\tbackground: #aaa;\n\t\tmin-width: 5px;\n\t}\n\t.tokens .arrow {\n\t\tcolor: rgba(0, 0, 0, 0.35);\n\t}\n\t.tokens .nfc {\n\t\tdisplay: flex;\n\t\tborder: 2px solid #fa0;\n\t\tbackground: #fd8;\n\t\tborder-radius: 5px;\n\t}\n\t.tokens code {\n\t\tfont-size: 90%;\n\t\tpadding: 2px;\n\t\tborder-radius: 5px;\n\t\tcolor: #fff;\n\t\tbackground: rgba(0, 0, 0, .3);\n\t\talign-self: center;\n\t}",document.body.append(A)}export{H as compare_arrays,L as dns_from_normalized_ens,T as dom_from_tokens,d as ens_normalize,u as ens_tokenize,m as escape_for_html,x as escape_unicode,D as explode_cp,F as group_by,Q as hex_cp,y as is_printable_ascii,I as quote_cp,k as split_between,K as split_linear,v as use_default_style};

@@ -254,7 +254,7 @@ function decode_arithmetic(bytes) {

function consume_emoji_reversed(cps, node, input) {
function consume_emoji_reversed(cps, node, eaten) {
let emoji;
let stack = [];
let pos = cps.length;
if (input) input.length = 0; // clear input buffer (if needed)
if (eaten) eaten.length = 0; // clear input buffer (if needed)
while (pos) {

@@ -271,3 +271,3 @@ let cp = cps[--pos];

emoji = stack.slice(); // copy stack
input?.push(...cps.slice(pos).reverse()); // copy input (if needed)
if (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)
cps.length = pos; // truncate

@@ -295,3 +295,3 @@ }

if (emoji) {
tokens.push({type: TY_EMOJI, emoji, input: eaten, cps: filter_fe0f(emoji)});
tokens.push({type: TY_EMOJI, emoji, input: eaten.slice(), cps: filter_fe0f(emoji)});
} else {

@@ -298,0 +298,0 @@ let cp = input.pop();

@@ -1,1 +0,1 @@

function A(A){return 1&A?~A>>1:A>>1}function g(A,g){let e=Array(A);for(let B=0,C=-1;B<A;B++)e[B]=C+=1+g();return e}function e(g,e){let B=Array(g);for(let C=0,t=0;C<g;C++)B[C]=t+=A(e());return B}function B(A,e){let B=g(A(),A),C=A(),t=g(C,A),o=function(A,g){let e=Array(A);for(let B=0;B<A;B++)e[B]=1+g();return e}(C,A);for(let A=0;A<C;A++)for(let g=0;g<o[A];g++)B.push(t[A]+g);return e?B.map((A=>e[A])):B}function C(A,g,B,C){let t=Array(A).fill().map((()=>[]));for(let o=0;o<g;o++)e(A,B).forEach(((A,g)=>t[g].push(C?C(A):A)));return t}function t(A,g){let e=1+g(),B=g(),t=function(A){let g=[];for(;;){let e=A();if(0==e)break;g.push(e)}return g}(g);return C(t.length,1+A,g).flatMap(((A,g)=>{let[C,...o]=A;return Array(t[g]).fill().map(((A,g)=>{let t=g*B;return[C+g*e,o.map((A=>A+t))]}))}))}function o(A,g){return C(1+g(),1+A,g).map((A=>[A[0],A.slice(1)]))}var w=function(A){let g=0;return()=>A[g++]}(function(A){let g=0;function e(){return A[g++]<<8|A[g++]}let B=e(),C=1,t=[0,1];for(let A=1;A<B;A++)t.push(C+=e());let o=e(),w=g;g+=o;let n=0,s=0;function l(){return 0==n&&(s=s<<8|A[g++],n=8),s>>--n&1}const r=2**31,E=r>>>1,Q=r-1;let I=0;for(let A=0;A<31;A++)I=I<<1|l();let D=[],i=0,c=r;for(;;){let A=Math.floor(((I-i+1)*C-1)/c),g=0,e=B;for(;e-g>1;){let B=g+e>>>1;A<t[B]?e=B:g=B}if(0==g)break;D.push(g);let o=i+Math.floor(c*t[g]/C),w=i+Math.floor(c*t[g+1]/C)-1;for(;0==((o^w)&E);)I=I<<1&Q|l(),o=o<<1&Q,w=w<<1&Q|1;for(;o&~w&536870912;)I=I&E|I<<1&Q>>>1|l(),o=o<<1^E,w=(w^E)<<1|E|1;i=o,c=1+w-o}let M=B-4;return D.map((g=>{switch(g-M){case 3:return M+65792+(A[w++]<<16|A[w++]<<8|A[w++]);case 2:return M+256+(A[w++]<<8|A[w++]);case 1:return M+A[w++];default:return g-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))));const n=new Set(B(w)),s=new Set(B(w)),l=function(A){let g=[];for(;;){let e=A();if(0==e)break;g.push(t(e,A))}for(;;){let e=A()-1;if(e<0)break;g.push(o(e,A))}return Object.fromEntries(g.flat())}(w),r=function(A){let g=B(A).sort(((A,g)=>A-g));return function e(){let C=[];for(;;){let t=B(A);if(0==t.length)break;C.push({set:new Set(t.map((A=>g[A]))),node:e()})}C.sort(((A,g)=>g.set.size-A.set.size));let t=A();return{branches:C,valid:0!=(1&t),fe0f:0!=(2&t),save:0!=(4&t),check:0!=(8&t)}}()}(w),E=new Set(B(w,[...n].sort(((A,g)=>A-g))));function Q(A){return A.normalize("NFC")}function I(A){return[...A].map((A=>A.codePointAt(0)))}function D(A){return A.filter((A=>65039!=A))}function i(A,g=!1){let e=[...A].map((A=>A.codePointAt(0))).reverse(),B=[];for(;e.length;){let A=c(e,r);if(A){B.push(...g?A:D(A));continue}let C=e.pop();if(n.has(C)){B.push(C);continue}if(s.has(C))continue;let t=l[C];if(!t)throw new Error(`Disallowed codepoint: 0x${C.toString(16).toUpperCase()}`);B.push(...t)}return Q(String.fromCodePoint(...B))}function c(A,g,e){let B,C=[],t=A.length;for(e&&(e.length=0);t;){let o=A[--t];if(g=g.branches.find((A=>A.set.has(o)))?.node,!g)break;C.push(o),g.fe0f&&(C.push(65039),t>0&&65039==A[t-1]&&t--),g.valid&&(B=C.slice(),e?.push(...A.slice(t).reverse()),A.length=t)}return B}function M(A){let g=I(A).reverse(),e=[],B=[];for(;g.length;){let A=c(g,r,e);if(A)B.push({type:"emoji",emoji:A,input:e,cps:D(A)});else{let A=g.pop();if(46===A)B.push({type:"stop"});else if(n.has(A))B.push({type:"valid",cps:[A]});else if(s.has(A))B.push({type:"ignored",cp:A});else{let g=l[A];g?B.push({type:"mapped",cp:A,cps:g}):B.push({type:"disallowed",cp:A})}}}for(let A=0,g=-1;A<B.length;A++){let e=B[A];if(h(e.type))if(p(e.cps)){let e=A+1;for(let A=e;A<B.length;A++){let{type:g,cps:C}=B[A];if(h(g)){if(!p(C))break;e=A+1}else if("ignored"!==g||"disallowed"!==g)break}g<0&&(g=A);let C=B.slice(g,e),t=C.flatMap((A=>h(A.type)?A.cps:[])),o=String.fromCodePoint(...t),w=Q(o);o===w?A=e-1:(B.splice(g,e-g,{type:"nfc",input:t,cps:I(w),tokens:F(C)}),A=g),g=-1}else g=A;else"emoji"===e.type&&(g=-1)}return F(B)}function h(A){return"valid"===A||"mapped"===A}function p(A){return A.some((A=>E.has(A)))}function F(A){for(let g=0;g<A.length;g++)if("valid"===A[g].type){let e=g+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(g,e-g,{type:"valid",cps:A.slice(g,e).flatMap((A=>A.cps))})}return A}export{i as ens_normalize,M as ens_tokenize};
function A(A){return 1&A?~A>>1:A>>1}function g(A,g){let e=Array(A);for(let B=0,C=-1;B<A;B++)e[B]=C+=1+g();return e}function e(g,e){let B=Array(g);for(let C=0,t=0;C<g;C++)B[C]=t+=A(e());return B}function B(A,e){let B=g(A(),A),C=A(),t=g(C,A),o=function(A,g){let e=Array(A);for(let B=0;B<A;B++)e[B]=1+g();return e}(C,A);for(let A=0;A<C;A++)for(let g=0;g<o[A];g++)B.push(t[A]+g);return e?B.map((A=>e[A])):B}function C(A,g,B,C){let t=Array(A).fill().map((()=>[]));for(let o=0;o<g;o++)e(A,B).forEach(((A,g)=>t[g].push(C?C(A):A)));return t}function t(A,g){let e=1+g(),B=g(),t=function(A){let g=[];for(;;){let e=A();if(0==e)break;g.push(e)}return g}(g);return C(t.length,1+A,g).flatMap(((A,g)=>{let[C,...o]=A;return Array(t[g]).fill().map(((A,g)=>{let t=g*B;return[C+g*e,o.map((A=>A+t))]}))}))}function o(A,g){return C(1+g(),1+A,g).map((A=>[A[0],A.slice(1)]))}var w=function(A){let g=0;return()=>A[g++]}(function(A){let g=0;function e(){return A[g++]<<8|A[g++]}let B=e(),C=1,t=[0,1];for(let A=1;A<B;A++)t.push(C+=e());let o=e(),w=g;g+=o;let n=0,s=0;function l(){return 0==n&&(s=s<<8|A[g++],n=8),s>>--n&1}const r=2**31,E=r>>>1,Q=r-1;let I=0;for(let A=0;A<31;A++)I=I<<1|l();let i=[],D=0,c=r;for(;;){let A=Math.floor(((I-D+1)*C-1)/c),g=0,e=B;for(;e-g>1;){let B=g+e>>>1;A<t[B]?e=B:g=B}if(0==g)break;i.push(g);let o=D+Math.floor(c*t[g]/C),w=D+Math.floor(c*t[g+1]/C)-1;for(;0==((o^w)&E);)I=I<<1&Q|l(),o=o<<1&Q,w=w<<1&Q|1;for(;o&~w&536870912;)I=I&E|I<<1&Q>>>1|l(),o=o<<1^E,w=(w^E)<<1|E|1;D=o,c=1+w-o}let M=B-4;return i.map((g=>{switch(g-M){case 3:return M+65792+(A[w++]<<16|A[w++]<<8|A[w++]);case 2:return M+256+(A[w++]<<8|A[w++]);case 1:return M+A[w++];default:return g-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))));const n=new Set(B(w)),s=new Set(B(w)),l=function(A){let g=[];for(;;){let e=A();if(0==e)break;g.push(t(e,A))}for(;;){let e=A()-1;if(e<0)break;g.push(o(e,A))}return Object.fromEntries(g.flat())}(w),r=function(A){let g=B(A).sort(((A,g)=>A-g));return function e(){let C=[];for(;;){let t=B(A);if(0==t.length)break;C.push({set:new Set(t.map((A=>g[A]))),node:e()})}C.sort(((A,g)=>g.set.size-A.set.size));let t=A();return{branches:C,valid:0!=(1&t),fe0f:0!=(2&t),save:0!=(4&t),check:0!=(8&t)}}()}(w),E=new Set(B(w,[...n].sort(((A,g)=>A-g))));function Q(A){return A.normalize("NFC")}function I(A){return[...A].map((A=>A.codePointAt(0)))}function i(A){return A.filter((A=>65039!=A))}function D(A,g=!1){let e=[...A].map((A=>A.codePointAt(0))).reverse(),B=[];for(;e.length;){let A=c(e,r);if(A){B.push(...g?A:i(A));continue}let C=e.pop();if(n.has(C)){B.push(C);continue}if(s.has(C))continue;let t=l[C];if(!t)throw new Error(`Disallowed codepoint: 0x${C.toString(16).toUpperCase()}`);B.push(...t)}return Q(String.fromCodePoint(...B))}function c(A,g,e){let B,C=[],t=A.length;for(e&&(e.length=0);t;){let o=A[--t];if(g=g.branches.find((A=>A.set.has(o)))?.node,!g)break;C.push(o),g.fe0f&&(C.push(65039),t>0&&65039==A[t-1]&&t--),g.valid&&(B=C.slice(),e&&e.push(...A.slice(t).reverse()),A.length=t)}return B}function M(A){let g=I(A).reverse(),e=[],B=[];for(;g.length;){let A=c(g,r,e);if(A)B.push({type:"emoji",emoji:A,input:e.slice(),cps:i(A)});else{let A=g.pop();if(46===A)B.push({type:"stop"});else if(n.has(A))B.push({type:"valid",cps:[A]});else if(s.has(A))B.push({type:"ignored",cp:A});else{let g=l[A];g?B.push({type:"mapped",cp:A,cps:g}):B.push({type:"disallowed",cp:A})}}}for(let A=0,g=-1;A<B.length;A++){let e=B[A];if(h(e.type))if(p(e.cps)){let e=A+1;for(let A=e;A<B.length;A++){let{type:g,cps:C}=B[A];if(h(g)){if(!p(C))break;e=A+1}else if("ignored"!==g||"disallowed"!==g)break}g<0&&(g=A);let C=B.slice(g,e),t=C.flatMap((A=>h(A.type)?A.cps:[])),o=String.fromCodePoint(...t),w=Q(o);o===w?A=e-1:(B.splice(g,e-g,{type:"nfc",input:t,cps:I(w),tokens:F(C)}),A=g),g=-1}else g=A;else"emoji"===e.type&&(g=-1)}return F(B)}function h(A){return"valid"===A||"mapped"===A}function p(A){return A.some((A=>E.has(A)))}function F(A){for(let g=0;g<A.length;g++)if("valid"===A[g].type){let e=g+1;for(;e<A.length&&"valid"===A[e].type;)e++;A.splice(g,e-g,{type:"valid",cps:A.slice(g,e).flatMap((A=>A.cps))})}return A}export{D as ens_normalize,M as ens_tokenize};

@@ -1,1 +0,1 @@

function A(A){return 1&A?~A>>1:A>>1}function g(A,g){let B=Array(A);for(let C=0,w=-1;C<A;C++)B[C]=w+=1+g();return B}function B(g,B){let C=Array(g);for(let w=0,o=0;w<g;w++)C[w]=o+=A(B());return C}function C(A,B){let C=g(A(),A),w=A(),o=g(w,A),e=function(A,g){let B=Array(A);for(let C=0;C<A;C++)B[C]=1+g();return B}(w,A);for(let A=0;A<w;A++)for(let g=0;g<e[A];g++)C.push(o[A]+g);return B?C.map((A=>B[A])):C}function w(A,g,C,w){let o=Array(A).fill().map((()=>[]));for(let e=0;e<g;e++)B(A,C).forEach(((A,g)=>o[g].push(w?w(A):A)));return o}function o(A,g){let B=1+g(),C=g(),o=function(A){let g=[];for(;;){let B=A();if(0==B)break;g.push(B)}return g}(g);return w(o.length,1+A,g).flatMap(((A,g)=>{let[w,...e]=A;return Array(o[g]).fill().map(((A,g)=>{let o=g*C;return[w+g*B,e.map((A=>A+o))]}))}))}function e(A,g){return w(1+g(),1+A,g).map((A=>[A[0],A.slice(1)]))}var t=function(A){let g=0;return()=>A[g++]}(function(A){let g=0;function B(){return A[g++]<<8|A[g++]}let C=B(),w=1,o=[0,1];for(let A=1;A<C;A++)o.push(w+=B());let e=B(),t=g;g+=e;let E=0,n=0;function Q(){return 0==E&&(n=n<<8|A[g++],E=8),n>>--E&1}const I=2**31,D=I>>>1,s=I-1;let M=0;for(let A=0;A<31;A++)M=M<<1|Q();let l=[],r=0,F=I;for(;;){let A=Math.floor(((M-r+1)*w-1)/F),g=0,B=C;for(;B-g>1;){let C=g+B>>>1;A<o[C]?B=C:g=C}if(0==g)break;l.push(g);let e=r+Math.floor(F*o[g]/w),t=r+Math.floor(F*o[g+1]/w)-1;for(;0==((e^t)&D);)M=M<<1&s|Q(),e=e<<1&s,t=t<<1&s|1;for(;e&~t&536870912;)M=M&D|M<<1&s>>>1|Q(),e=e<<1^D,t=(t^D)<<1|D|1;r=e,F=1+t-e}let K=C-4;return l.map((g=>{switch(g-K){case 3:return K+65792+(A[t++]<<16|A[t++]<<8|A[t++]);case 2:return K+256+(A[t++]<<8|A[t++]);case 1:return K+A[t++];default:return g-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))));const E=new Set(C(t)),n=new Set(C(t)),Q=function(A){let g=[];for(;;){let B=A();if(0==B)break;g.push(o(B,A))}for(;;){let B=A()-1;if(B<0)break;g.push(e(B,A))}return Object.fromEntries(g.flat())}(t),I=function(A){let g=C(A).sort(((A,g)=>A-g));return function B(){let w=[];for(;;){let o=C(A);if(0==o.length)break;w.push({set:new Set(o.map((A=>g[A]))),node:B()})}w.sort(((A,g)=>g.set.size-A.set.size));let o=A();return{branches:w,valid:0!=(1&o),fe0f:0!=(2&o),save:0!=(4&o),check:0!=(8&o)}}()}(t);function D(A){return A.filter((A=>65039!=A))}function s(A,g=!1){let B=[...A].map((A=>A.codePointAt(0))).reverse(),C=[];for(;B.length;){let A=M(B,I);if(A){C.push(...g?A:D(A));continue}let w=B.pop();if(E.has(w)){C.push(w);continue}if(n.has(w))continue;let o=Q[w];if(!o)throw new Error(`Disallowed codepoint: 0x${w.toString(16).toUpperCase()}`);C.push(...o)}return String.fromCodePoint(...C).normalize("NFC")}function M(A,g,B){let C,w=[],o=A.length;for(B&&(B.length=0);o;){let e=A[--o];if(g=g.branches.find((A=>A.set.has(e)))?.node,!g)break;w.push(e),g.fe0f&&(w.push(65039),o>0&&65039==A[o-1]&&o--),g.valid&&(C=w.slice(),B?.push(...A.slice(o).reverse()),A.length=o)}return C}new Set(C(t,[...E].sort(((A,g)=>A-g))));export{s as ens_normalize};
function A(A){return 1&A?~A>>1:A>>1}function g(A,g){let B=Array(A);for(let C=0,w=-1;C<A;C++)B[C]=w+=1+g();return B}function B(g,B){let C=Array(g);for(let w=0,o=0;w<g;w++)C[w]=o+=A(B());return C}function C(A,B){let C=g(A(),A),w=A(),o=g(w,A),e=function(A,g){let B=Array(A);for(let C=0;C<A;C++)B[C]=1+g();return B}(w,A);for(let A=0;A<w;A++)for(let g=0;g<e[A];g++)C.push(o[A]+g);return B?C.map((A=>B[A])):C}function w(A,g,C,w){let o=Array(A).fill().map((()=>[]));for(let e=0;e<g;e++)B(A,C).forEach(((A,g)=>o[g].push(w?w(A):A)));return o}function o(A,g){let B=1+g(),C=g(),o=function(A){let g=[];for(;;){let B=A();if(0==B)break;g.push(B)}return g}(g);return w(o.length,1+A,g).flatMap(((A,g)=>{let[w,...e]=A;return Array(o[g]).fill().map(((A,g)=>{let o=g*C;return[w+g*B,e.map((A=>A+o))]}))}))}function e(A,g){return w(1+g(),1+A,g).map((A=>[A[0],A.slice(1)]))}var t=function(A){let g=0;return()=>A[g++]}(function(A){let g=0;function B(){return A[g++]<<8|A[g++]}let C=B(),w=1,o=[0,1];for(let A=1;A<C;A++)o.push(w+=B());let e=B(),t=g;g+=e;let E=0,n=0;function Q(){return 0==E&&(n=n<<8|A[g++],E=8),n>>--E&1}const I=2**31,D=I>>>1,s=I-1;let M=0;for(let A=0;A<31;A++)M=M<<1|Q();let l=[],r=0,F=I;for(;;){let A=Math.floor(((M-r+1)*w-1)/F),g=0,B=C;for(;B-g>1;){let C=g+B>>>1;A<o[C]?B=C:g=C}if(0==g)break;l.push(g);let e=r+Math.floor(F*o[g]/w),t=r+Math.floor(F*o[g+1]/w)-1;for(;0==((e^t)&D);)M=M<<1&s|Q(),e=e<<1&s,t=t<<1&s|1;for(;e&~t&536870912;)M=M&D|M<<1&s>>>1|Q(),e=e<<1^D,t=(t^D)<<1|D|1;r=e,F=1+t-e}let K=C-4;return l.map((g=>{switch(g-K){case 3:return K+65792+(A[t++]<<16|A[t++]<<8|A[t++]);case 2:return K+256+(A[t++]<<8|A[t++]);case 1:return K+A[t++];default:return g-1}}))}(Uint8Array.from(atob("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"),(A=>A.charCodeAt(0)))));const E=new Set(C(t)),n=new Set(C(t)),Q=function(A){let g=[];for(;;){let B=A();if(0==B)break;g.push(o(B,A))}for(;;){let B=A()-1;if(B<0)break;g.push(e(B,A))}return Object.fromEntries(g.flat())}(t),I=function(A){let g=C(A).sort(((A,g)=>A-g));return function B(){let w=[];for(;;){let o=C(A);if(0==o.length)break;w.push({set:new Set(o.map((A=>g[A]))),node:B()})}w.sort(((A,g)=>g.set.size-A.set.size));let o=A();return{branches:w,valid:0!=(1&o),fe0f:0!=(2&o),save:0!=(4&o),check:0!=(8&o)}}()}(t);function D(A){return A.filter((A=>65039!=A))}function s(A,g=!1){let B=[...A].map((A=>A.codePointAt(0))).reverse(),C=[];for(;B.length;){let A=M(B,I);if(A){C.push(...g?A:D(A));continue}let w=B.pop();if(E.has(w)){C.push(w);continue}if(n.has(w))continue;let o=Q[w];if(!o)throw new Error(`Disallowed codepoint: 0x${w.toString(16).toUpperCase()}`);C.push(...o)}return String.fromCodePoint(...C).normalize("NFC")}function M(A,g,B){let C,w=[],o=A.length;for(B&&(B.length=0);o;){let e=A[--o];if(g=g.branches.find((A=>A.set.has(e)))?.node,!g)break;w.push(e),g.fe0f&&(w.push(65039),o>0&&65039==A[o-1]&&o--),g.valid&&(C=w.slice(),B&&B.push(...A.slice(o).reverse()),A.length=o)}return C}new Set(C(t,[...E].sort(((A,g)=>A-g))));export{s as ens_normalize};
{
"name": "@adraffy/ens-normalize",
"version": "1.5.2",
"version": "1.5.3",
"description": "Compact ES6 Ethereum Name Service (ENS) Name Normalizer",

@@ -5,0 +5,0 @@ "keywords": [

@@ -49,7 +49,7 @@ import r from './include.js';

function consume_emoji_reversed(cps, node, input) {
function consume_emoji_reversed(cps, node, eaten) {
let emoji;
let stack = [];
let pos = cps.length;
if (input) input.length = 0; // clear input buffer (if needed)
if (eaten) eaten.length = 0; // clear input buffer (if needed)
while (pos) {

@@ -66,3 +66,3 @@ let cp = cps[--pos];

emoji = stack.slice(); // copy stack
input?.push(...cps.slice(pos).reverse()); // copy input (if needed)
if (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)
cps.length = pos; // truncate

@@ -90,3 +90,3 @@ }

if (emoji) {
tokens.push({type: TY_EMOJI, emoji, input: eaten, cps: filter_fe0f(emoji)});
tokens.push({type: TY_EMOJI, emoji, input: eaten.slice(), cps: filter_fe0f(emoji)});
} else {

@@ -93,0 +93,0 @@ let cp = input.pop();

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc