JSPM

  • Created
  • Published
  • Downloads 1619596
  • Score
    100M100P100Q240980F
  • 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

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

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

// Primary API: string -> string
let normalized = ens_normalize('šŸš“ā€ā™‚ļø.eth'); // throws on invalid names
// ready for namehash
// note: does not enforce .eth TLD 3-character minimum

Instead of exposing an IDNA-like API (is_valid(), get_mapped(), etc.), this library exposes a single function which converts names to tokens:

// Secondary API: string -> Token[]
// turn a name into a list of tokens
let tokens = ens_tokenize('RšŸ’©\uFE0Fa\xAD./'); // never throws
// [
//     { 
//         type: 'mapped', 
//         cp: 82,         // input
//         cps: [ 114 ]    // output
//     }, 
//     { 
//         type: 'emoji',
//         input: [ 128169, 65039 ],  // input 
//         emoji: [ 128169, 65039 ],  // ideal form
//         cps: [ 128169 ]            // output
//     },
//     { type: 'valid', cps: [ 97 ] },
//     { type: 'ignored', cp: 173 },
//     { type: 'stop' },
//     { type: 'disallowed', cp: 47 }
// ]

Build

  • npm run make compress data from @adraffy/ensip-norm
  • npm run test run validation tests
  • npm run build create /dist/
  • npm run build-dev compile parts.js, dns.js, and all.js