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.0.2 to 1.0.3

69

ens-normalize.js

@@ -8,3 +8,3 @@ function bytes_from_base64(s) {

const TABLE_D = bytes_from_base64('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');
const TABLE_L = bytes_from_base64('QRqAQmUXgH4BBzCCKQOE6gYRCAEJJFEDgA8AEIEqACA/gIEmgeKOIQacnogSK4W/AgNacwigqyIDhhZEA4ITBwQUCgM8gMkIuGAIBiAKCCAICCAIBiAaCECAhAa91wYKBwwEdoAbBIpKgqcJir1NGmAAGgCGljDXHoSHA7XZAAaA2gEDgNMBCgYAFYAwFAVrBwNYgFwDgCMDBRJ2Br74BAUoAgYUAAQO9/FQuh3O5AObCYKaBNPigEsK3zcHGmIGGgAqBuBSBAUoAgYUCwO/SQAGgNoBA4DTAQoGAwaAMAIGDAIGDAIDDAwEn7qDkyj/AUWwgAgkgOCAHAuA/gEPGAEHIIGjA/8BiGWERzP/AZaAi20gl4DVACD/ACvA5SAa/wJcfQAaAAAaAAAHAAESEAAaDwAaAA0EGgEICgAEIwMHDgELEAAaHQAaAAMEBgIIDAEHEgEaIwMEBgEFCgUHFAEaIwAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAQRhiABByQBESMCBiYHESUBByQBESMCBiYHESUBByQBESMCBiYHESUBByQBESMCBiYHESUBByQBESMCBiYLCoanAAoAAAoAAAoAAAoAkIAi/wNSZIRoBP8DRj0cBABdAwIdAwCCAhqLRYomCmE=');
const TABLE_N = bytes_from_base64('QRqAQmUXgH4BBzCCKQOE6gYRCAEJJFEDgA8AEIEqACA/gIEmgeKOIQacnogSK4W/AgNacwigqyIDhhZEA4ITBwQUCgM8gMkIuGAIBiAKCCAICCAIBiAaCECAhAa91wYKBwwEdoAbBIpKgqcJir1NGmAAGgCGljDXHoSHA7XZAAaA2gEDgNMBCgYAFYAwFAVrBwNYgFwDgCMDBRJ2Br74BAUoAgYUAAQO9/FQuh3O5AObCYKaBNPigEsK3zcHGmIGGgAqBuBSBAUoAgYUCwO/SQAGgNoBA4DTAQoGAwaAMAIGDAIGDAIDDAwEn7qDkyj/AUWwgAgkgOCAHAuA/gEPGAEHIIGjA/8BiGWERzP/AZaAi20gl4DVACD/ACvA5SAa/wJcfQAaAAAaAAAHAAESEAAaDwAaAA0EGgEICgAEIwMHDgELEAAaHQAaAAMEBgIIDAEHEgEaIwMEBgEFCgUHFAEaIwAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAAaAAQRhiABByQBESMCBiYHESUBByQBESMCBiYHESUBByQBESMCBiYHESUBByQBESMCBiYHESUBByQBESMCBiYLCoanAAoAAAoAAAoAAAoAkIAi/wNSZIRoBP8DRj0cBABdAwIdAwCCAhqLRYomCmE=');
const TABLE_W = [

@@ -19,2 +19,8 @@ 'gCqAQghdAQIChpIEhpUBfEaApAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQGDAIEAwYCBAIEBAgCBAIEAgQDBgIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAoBvAYB2AgQCBAKBlQKDQAGBHwIEAoEeAYEXAoEcAQIBgRUDgCIBgHgBBAGBEQKBHAEGAgwBAQGBHQSBLAEGAgYBgScCBAIEAoE2AYEvAoE2A4ErAoE2AYEvAoE0AQIBgS0CBAKBOAGBMQQIESICBAIEAgQCBAIEAgQCBAMGAgQCBAIEAgQCBAIEAgQCBAYMAoA/AVQBdAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAoCBAoCKAgQCBAIEAgQCBAIEAgQCBAjT5AHT0QKAwwHVGAPTxwKBAwGBkgEGAYAJAgQCBAIEAgRig00Bg3wBg3cBEAGDjgEEAQwBg5MBBCiDVAGDbQEOAQoBg7pcgFYBAgIkAoDMK4APAgQCgPMCgPwJgHgHgA0BhWkFhaoCAgECQBIBSQEMARoBEAEDAQkBCwIyAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAJpAQ4BBAIVAQUCgAYCaQFwZoBMAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQKFAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQDBgIEAgQCBAIEAgQCBAMGAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBAIEAgQCBIlekziBO7u4BgwvuCGLBJjTAQQBFAEGAQIBAAEQATIB/wDEUIAk/wDMUwGAigGAhwIEAQIBgnAKglsBgugBguUBBAEEAQIBBAErAYNeAQIBtOIBuL8BBAECAYNoAQQBAgGDaQIIAQQBgTwBgTcBg0oBtQQBAgG4zQEIAQIBuNABtNsBg3EBuN4Esj0BAgGGOwESAQYBAgGF+AECARwBCgECDoBsI4NVAYNdAYNkAYJJAYJYAYNrAYNyAQQBCAS1rAG1OwFf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',

const TABLE_V = bytes_from_base64('iM2AAIAAgACAAIAAgACAAG4BEX1wgACASoA1AYZaAR+AHoIOgGRmAUcBkQz6ByaAGIAPbYC2gHfd0oWHKg86egGADHWANWOAdYAAgH2AAHd1gI6AhAGAIlQTUoEmgIUBUg==');
const TABLE_LD = bytes_from_base64('haABBQEBAQEFBA0BBwECIwIIEBImAQIJAQEBAQIoAwIBEgMFBAEJAQEBAQECHwsDDwIEAQECAwIGSiFWBQIBAQoBAQoBAQQCAR0BAgUSCgUCAgYBD46+ARhZDiIBAf8AEBUz4c0FCAEFCgEDCgSAEQEBAQMDAQIBAQIBHAKA0SIBAYGMAwERDAMcBAIMLgEBAgQBAgIBAgEBAgEFAv8AWbRE');
const TABLE_RD = bytes_from_base64('haABAR4BCiMCAQMBXwEBGAIKAwIBEAEBHh0zSiFVGQcBAQQBBAUTAwECBhENARuOvgEYWQ4iAQH\/ABAVMuHOBgEBAQIDCQEKAgEGBYAQEhcGgNIjgYwVDAQbEi4BAQUBCAEEBAL/AFm1RA==');
const TABLE_T = bytes_from_base64('gC0BgdJwgJMHgIctAQEBAgECAQFICwEBLhUQAWUHAgYCAgEEIQEBAR4bWws6CQkBGAQBCQEDAQUrAzwIKhgBIDcBAQEECAQBAwcKAh0BOgEEBAgBFAIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgECAQEECAEHAgsCHgE9AQwBMgEDATcBAQMFAwEEBwILAh0BOgECAQYBBQIUAhwCOQIEBAgBFAIdAUgBBwMBAVoBAgcMCGIBAgkLBkoCGwEBAQEBNw4BBQECBQsBJAkBZgQBBgECAgIZAgQDEAQNAQICBgEPAYI\/A4MyAx0CHgIeAkACAQcIAQILCQEtAwEBdQIiAXYDBAIJAQYDgFsCAgE6AQEHAQEBAQIIBgoCATAfMQQwAQEFAQEFASgJDAIgBAICAQM4AQECAwEBAzoIAgKAGAMBDQEHBAEGAQMCgEZAgYsBAgIaBTEFBQZgIYt+A4ANAWAggaoEawL1VAQBCiACUAKAkAEDAQQBGQIFAYAXAhoSDQEmCBkLLgMwAQIEAgInAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggBgG4BAgEEAc6wAYJhEBAQgE8BgHkDgYEBgGIBgBUFhgYDAQIFBCgDBAGAJQKBvQSBAwKAGQsxBHsBNg8pAQICCgMxBAICBwE9AyQFAQg+AQwCNAkKBAIBXwMCAQECBgGAIAEDCBUCOQIDASUHAwWAQwgCAwEBFwFUBgEBBAIBAoBuBAYCAQIbAlUIAgEBAmoBAQECBgEBZQMCBAEFgIMJAQKAgAIBAQQBgBAEAgIEASAKKAYCBAgBCQYCAy4NAQKBFgcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBgNsClLsJtjcFOweDmAE\/BFEBzDgCAQSR3C4CF4GgAwkQAgceBIAUA4c7NwQyCAEOARYFAQ+E0AcBEQIHAQIBBYCFB4D3AT0EhWAHbQj\/C5c1AR5ggACAcA==');
class TableReader {

@@ -48,3 +54,3 @@ constructor(table) {

// member are 2-tuples [unsigned(cp), n]
// member are 1-tuples [unsigned(cp)]
function lookup_member(table, cp) {

@@ -55,2 +61,14 @@ let x = 0;

x += r.read();
if (x == cp) return true;
if (x > cp) break;
}
return false;
}
// member are 2-tuples [unsigned(cp), n]
function lookup_member_span(table, cp) {
let x = 0;
let r = new TableReader(table);
while (r.more) {
x += r.read();
let d = cp - x;

@@ -166,11 +184,11 @@ if (d < 0) break;

export function is_disallowed(cp) {
return lookup_member(TABLE_D, typeof cp === 'string' ? cp.codePointAt(0) : cp);
return lookup_member_span(TABLE_D, typeof cp === 'string' ? cp.codePointAt(0) : cp);
}
export function is_ignored(cp) {
return lookup_member(TABLE_I, typeof cp === 'string' ? cp.codePointAt(0) : cp);
return lookup_member_span(TABLE_I, typeof cp === 'string' ? cp.codePointAt(0) : cp);
}
export function is_combining_mark(cp) {
return lookup_member(TABLE_M, typeof cp === 'string' ? cp.codePointAt(0) : cp);
return lookup_member_span(TABLE_M, typeof cp === 'string' ? cp.codePointAt(0) : cp);
}

@@ -182,3 +200,3 @@

if (typeof cp === 'string') cp = cp.codePointAt(0);
let mapped = lookup_linear(TABLE_L, cp);
let mapped = lookup_linear(TABLE_N, cp);
if (mapped) return mapped;

@@ -191,9 +209,36 @@ for (let i = 0; i < TABLE_W.length; i++) {

// idna2008 with CONTEXTJ
export function idna(s) {
if (typeof s !== 'string') throw new Error('expected string');
return [...s].map(c => {
let cp = c.codePointAt(0);
if (is_disallowed(cp)) throw new Error(`disallowed: 0x${cp.toString(16)}`); //new Error(`disallowed: ${cp} 0x${cp.toString(16)} ${c}`);
if (is_ignored(cp)) return '';
return get_mapped(cp) ?? c;
let v = [...s].map(x => x.codePointAt(0));
return v.map((cp, i) => {
if (is_disallowed(cp)) throw new Error(`disallowed: 0x${cp.toString(16).padStart(2, '0')}`);
if (is_ignored(cp)) return '';
if (cp === 0x200C) { // https://datatracker.ietf.org/doc/html/rfc5892#appendix-A.1
// rule 1: V + cp
// V = Combining_Class "Virama"
if (i > 0 && lookup_member(TABLE_V, v[i - 1])) {
return String.fromCodePoint(cp);
}
// rule 2: {L,D} + T* + cp + T* + {R,D}
// L,D,T,R = Joining_Type
if (i > 0 && i < v.length - 1) { // there is room on either side
let head = i - 1;
while (head > 1 && lookup_member_span(TABLE_T, v[head])) head--; // T*
if (lookup_member_span(TABLE_LD, v[head])) { // L or D
let tail = i + 1;
while (tail < v.length - 1 && lookup_member_span(TABLE_T, v[tail])) tail++; // T*
if (lookup_member_span(TABLE_RD, v[tail])) { // R or D
return String.fromCodePoint(cp);
}
}
}
throw new Error('disallowed: zero-width joiner without context');
} else if (cp === 0x200D) { // https://datatracker.ietf.org/doc/html/rfc5892#appendix-A.2
if (i > 0 && lookup_member(TABLE_V, v[i - 1])) { // Virama
return String.fromCodePoint(cp);
}
throw new Error('disallowed: zero-width non-joiner without context');
}
return get_mapped(cp) ?? String.fromCodePoint(cp);
}).join('').normalize('NFC');

@@ -212,5 +257,5 @@ }

if (s.endsWith('-')) throw new Error(`hyphen at label end: ${s}`);
if (s.length > 0 && is_combining_mark(s)) throw new Error('mark at label start: ${s}');
if (s.length > 0 && is_combining_mark(s)) throw new Error(`mark at label start: ${s}`);
return s;
}).join('.');
}

4

package.json
{
"name": "@adraffy/ens-normalize",
"version": "1.0.2",
"version": "1.0.3",
"description": "Compact ES6 Ethereum Name Service (ENS) Name Normalizer",
"keywords": ["ENS", "Ethereum"],
"keywords": ["ENS", "Ethereum", "UTS-46", "IDNA2008"],
"type": "module",

@@ -7,0 +7,0 @@ "main": "ens-normalize.js",

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