JSPM

  • Created
  • Published
  • Downloads 1609761
  • Score
    100M100P100Q223706F
  • License MIT

Compact ES6 Ethereum Name Service (ENS) Name Normalizer

Package Exports

  • @adraffy/ens-normalize
  • @adraffy/ens-normalize/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@adraffy/ens-normalize) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ens-normalize.js

1-file, 0-dependancy Compact ES6 Ethereum Name Service (ENS) Name Normalizer.


import {ens_normalize} from '@adraffy/ens-normalize';
// browser: 
// 'https://unpkg.com/@adraffy/ens-normalize@latest/dist/ens-normalize.min.js'


// example:
let normalized = ens_normalize('🚴‍♂️.eth'); // throws if error
// this value is ready for hashing

// errors:
// - not a string
// - contains disallowed character
// - puny decode failure
// - puny decode mismatch
// - label has double-hyphen
// - label starts/ends with hyphen
// - label starts with combining mark

// note: does not enforce .eth TLD 3-character minimum

Experimental Features

// 1st optional argument: ignore_disallowed (default: false)
// when truthy, disallowed characters are ignored 
console.log(ens_normalize('_', true)); // === ''
console.log(ens_normalize('_'));       // throws: disallowed

// 2nd optional argument: check_bidi (default: false)
// when truthy, bidi domain names are checked for validity

Building

  • Clone to access build/. The actual source is in build/ens-normalize.js. You can run this file directly.
  • Run node build/unicode.js download to download data from unicode.org.
  • Run node build/unicode.js parse to parse those files into JSON files.
  • Run node build/build-tables.js to extract the necessary tables as JSON and generate compressed tables as binary.
  • Run node build/build-source.js to inject the compressed tables into the source template and create the normal and minified dist/ files.