This package allows you to normalize a list of misspelled emails.
Instalation
Via npm:
npm i -s normalize-emails
Or via yarn:
yarn add normalize-emails
Usage
The module exports a default function with the following signature:
normalizeEmails(emails [, clearCache = false, config])
import normalizeEmails from 'normalize-emails'
const misspelled = [
'jhon@gmail.con',
'james@yahoo.com',
'mario@gmal.com',
'peter@hotmil.com',
]
const normalized = normalizeEmails(misspelled)
console.log(normalized)
The result would be an array of objects with the keys original
and fixed
:
[
{
original: 'jhon@gmail.con',
fixed: 'jhon@gmail.com'
},
{
original: 'james@yahoo.com',
fixed: null
},
{
original: 'mario@gmal.com',
fixed: 'mario@gmail.com'
},
{
original: 'peter@hotmil.com',
fixed: 'peter@hotmil.com'
},
]
Cache
Everytime a domain (top or second level) is normalized, it's result is kept in a memory cache.
The cache persists between multiple calls, but can be explicitly cleaned by passing a second argument:
const normalized = normalizeEmails(misspelled, true)
Configuration
The default configuration is specially tuned to work with the majority of the brazilian email domains.
To override the default configuration, just pass a config object as third argument:
const config = {
threshold: 0.6,
topLevelDomains: ['com', 'com.br', 'co.uk'],
secondLevelDomains: ['gmail', 'icloud'],
// specially used for brazilian domains, such as .sp.org.br
states: ['sp', 'rj', 'se'],
// include here domains that should not be normalized
bypass: ['amil.com.br'], // don't want it to be normalized as gmail.com
// include here domains that should be double checked
// and get it's top level domains converted to valid
// ones (i.e: 'gmail.com.br' -> 'gmail.com')
fullDomain: ['gmail.com'],
}
const normalized = normalizeEmails(misspelled, false, config)