Skip to content

djaybob/email-misspelled

 
 

Repository files navigation

email-misspelled

npm CircleCI Status codecov npm npm npm

Lightweight < 3ko lib

Check the misspelled email's domain and return a list of matching domain suggestions sorted by corrections needed

The string comparison is based on this algorithm

example

Table of Contents

  1. Install
  2. Usages
  3. Options
  4. Typescript support

Install

Install with npm:

    npm i email-misspelled --save

Install with yarn:

    yarn add email-misspelled

Usages

import emailMisspelled, { top100 } from "email-misspelled"

const emailChecker = emailMisspelled({ domains: top100 })

emailChecker("[email protected]")
/**
 * [{ 
 *      suggest: "hotmail.com", 
 *      misspelledCount: 1, 
 *      corrected:"user@hotmail.com", 
 *      original: "[email protected]"
 * }]
 **/

Returned object model
Result

Result = {
    /** suggested domain */  
    suggest: string  
    /** corrected email */  
    corrected: string  
    /** number correction needed */  
    misspelledCount: number  
    /** original email */  
    original: string  
}[]

Options

domains

Type Required Description
string[] DomainList true list of domains to compare

import emailMisspelled from "email-misspelled"
const emailChecker = emailMisspelled({ domains: ["random.org"] })

emailChecker("[email protected]") // []
emailChecker("[email protected]")
/**
 * return :
 * [{ 
 *      suggest: "random.org", 
 *      misspelledCount: 1, 
 *      corrected:"user@random.org", 
 *      original: "[email protected]"
 * }]
 **/

List of domains avaibles :

More details here

examples

import { top100, hotmail, live } from "email-misspelled"  

or

import { top100, hotmail, live } from "email-misspelled/domains"  
//etc  

or

import top100 from "email-misspelled/domains/popular"  
import hotmail from "email-misspelled/domains/hotmail"  
import live from "email-misspelled/domains/live"  
//etc  

Feel free to contribute


maxMisspelled

Type Required Default Description
number false 2 max possible misspelled

import emailMisspelled, { top100 } from "email-misspelled"
const emailChecker1 = emailMisspelled({ maxMisspelled: 1, domains: top100 })

emailChecker1("[email protected]")
/**
 * return :
 * [{ 
 *      suggest: "hotmail.com",  
 *      misspelledCount: 1,  
 *      corrected:"user@hotmail.com",  
 *      original: "[email protected]"
 * }]
 **/
emailChecker1("[email protected]") // []

const emailChecker2 = emailMisspelled({ maxMisspelled: 3, domains: top100 })

emailChecker2("[email protected]")
/**
 * return :
 * [{  
 *      suggest: "hotmail.com",  
 *      misspelledCount: 2,  
 *      corrected:"user@hotmail.com",  
 *      original: "[email protected]"  
 * }]
 **/
emailChecker2("[email protected]")
/**
 * return :
 * [{  
 *      suggest: "hotmail.com",  
 *      misspelledCount: 3,  
 *      corrected:"user@hotmail.com",  
 *      original: "[email protected]"  
 * }]
 **/
emailChecker2("[email protected]") //4 misspelled, return []

lengthDiffMax

Type Required Default Description
number false 3 max length difference between two string

import emailMisspelled, { top100 } from "email-misspelled"
const emailChecker1 = emailMisspelled({ lengthDiffMax: 1, domains: top100 })

emailChecker1("[email protected]")
/**
 * return :
 * [{  
 *      suggest: "hotmail.com",
 *      misspelledCount: 1,
 *      corrected:"user@hotmail.com",
 *      original: "[email protected]"
 * }]
 **/
emailChecker1("[email protected]") // []

const emailChecker2 = emailMisspelled({ lengthDiffMax: 2, domains: top100 })

emailChecker2("[email protected]")
/**
 * return :
 * [{ 
 *      suggest: "hotmail.com",
 *      misspelledCount: 1,
 *      corrected:"user@hotmail.com",
 *      original: "[email protected]"
 * }]
 **/
emailChecker2("[email protected]")
/**
 * return :
 * [{
 *      suggest: "gmail.com",
 *      misspelledCount: 1,
 *      corrected:"user@gmail.com",
 *      original: "[email protected]"
 * },
 * {
 *      suggest: "hotmail.com",
 *      misspelledCount: 2,
 *      corrected:"user@hotmail.com",
 *      original: "[email protected]"
 * }]
 **/


Typescript support

You can find Types and Interfaces under the /typings folder

DomainList

    import { DomainList } from "email-misspelled/typings"

    string[]

EmailMisspelledConstructor

    import { EmailMisspelledConstructor } from "email-misspelled/typings"

    (config: {
        lengthDiffMax?: number;
        maxMisspelled?: number;
        domains: DomainList;
    }): EmailMisspelled;

EmailMisspelled

    import { EmailMisspelled } from "email-misspelled/typings"

    (email: string): Result[]

Result

    import { Result } from "email-misspelled/typings"

    {
        suggest: string;
        corrected: string;
        misspelledCount: number;
        original: string;
    }

Top 100 domains list

ordered by number of existing email

  • gmail.com
  • yahoo.com
  • hotmail.com
  • aol.com
  • hotmail.co.uk
  • hotmail.fr
  • msn.com
  • yahoo.fr
  • wanadoo.fr
  • orange.fr
  • comcast.net
  • yahoo.co.uk
  • yahoo.com.br
  • yahoo.co.in
  • live.com
  • rediffmail.com
  • free.fr
  • gmx.de
  • web.de
  • yandex.ru
  • ymail.com
  • libero.it
  • outlook.com
  • uol.com.br
  • bol.com.br
  • mail.ru
  • cox.net
  • hotmail.it
  • sbcglobal.net
  • sfr.fr
  • live.fr
  • verizon.net
  • live.co.uk
  • googlemail.com
  • yahoo.es
  • ig.com.br
  • live.nl
  • bigpond.com
  • terra.com.br
  • yahoo.it
  • neuf.fr
  • yahoo.de
  • alice.it
  • rocketmail.com
  • att.net
  • laposte.net
  • facebook.com
  • bellsouth.net
  • yahoo.in
  • hotmail.es
  • charter.net
  • yahoo.ca
  • yahoo.com.au
  • rambler.ru
  • hotmail.de
  • tiscali.it
  • shaw.ca
  • yahoo.co.jp
  • sky.com
  • earthlink.net
  • optonline.net
  • freenet.de
  • t-online.de
  • aliceadsl.fr
  • virgilio.it
  • home.nl
  • qq.com
  • telenet.be
  • me.com
  • yahoo.com.ar
  • tiscali.co.uk
  • yahoo.com.mx
  • voila.fr
  • gmx.net
  • mail.com
  • planet.nl
  • tin.it
  • live.it
  • ntlworld.com
  • arcor.de
  • yahoo.co.id
  • frontiernet.net
  • hetnet.nl
  • live.com.au
  • yahoo.com.sg
  • zonnet.nl
  • club-internet.fr
  • juno.com
  • optusnet.com.au
  • blueyonder.co.uk
  • bluewin.ch
  • skynet.be
  • sympatico.ca
  • windstream.net
  • mac.com
  • centurytel.net
  • chello.nl
  • live.ca
  • aim.com
  • bigpond.net.au

TODO

  • external domain list
  • split domain list into smallest part (only hotmail, only gmail etc)
  • Doc
  • TU
  • TS
  • Extend default domain list
  • explicit folder for types exports
  • update demo
  • allow returning only first result

About

Check misspell email's domain and return a list of matching domain suggestions

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.4%
  • JavaScript 1.6%