1.1.0 • Published 8 months ago

email-typo-fixer v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

📧 email-typo-fixer

A TypeScript library that fixes common email typos and formatting issues. It handles various advanced scenarios like Outlook-style emails, special characters, multiple @ symbols, and more.

🌟 Features

  • Fixes common email typos and formatting issues
  • Handles Outlook-style emails (e.g., "Name email@example.com")
  • Handle common prefixes like "mailto:"
  • Handles repeated domains (e.g., "user@gmail.com@gmail.com")
  • Removes invalid special characters while preserving valid ones
  • Preserves valid email characters (including +, _, -, .)
  • Case-sensitive local part, lowercase domain
  • No external dependencies
  • Lightweight: ~2.4KB minified (ESM/CJS)

Installation

npm install email-typo-fixer
# or
yarn add email-typo-fixer
# or
pnpm add email-typo-fixer
# or
bun add email-typo-fixer

🚀 Usage

import { emailTypoFixer, DEFAULT_DOMAINS } from 'email-typo-fixer';

// Basic usage (using default domains)
const result = emailTypoFixer('user@gmial.com');
console.log(result); 
// Output:
// {
//   original: 'user@gmial.com',
//   suggested: 'user@gmail.com',
//   hasCorrection: true
// }

// Outlook-style email
const result2 = emailTypoFixer('John Doe <john.doe@@gmail.com>');
console.log(result2.suggested); // 'john.doe@gmail.com'

// With custom domains (overriding defaults)
const result3 = emailTypoFixer('user@company.internal', {
  domains: ['company.internal', 'corp.example.com']
});
console.log(result3.suggested); // 'user@company.internal'

// Combining default domains with custom domains
const result4 = emailTypoFixer('user@comapny.com', {
  domains: [...DEFAULT_DOMAINS, 'company.com']
});
console.log(result4.suggested); // 'user@comapny.com'

📘 API

emailTypoFixer(email: string, opts?: EmailTypoFixerOptions): EmailTypoFixerResult

Parameters

  • email: The email address to fix
  • opts (optional): Configuration options

    • domains: Array of valid domains to use for corrections. Defaults to:
      [
        "gmail.com",
        "yahoo.com",
        "hotmail.com",
        "outlook.com",
        "icloud.com",
        "aol.com"
      ]
    • domainMatchDistance: Maximum allowed distance for domain corrections (default: 3). Lower values are more strict:

      // More strict (only minor typos)
      emailTypoFixer('user@outl00k.com', { domainMatchDistance: 2 }); // No correction
      
      // Default behavior
      emailTypoFixer('user@outl00k.com', { domainMatchDistance: 3 }); // Suggests: user@outlook.com
      
      // More lenient
      emailTypoFixer('user@gmaillll.com', { domainMatchDistance: 5 }); // Suggests: user@gmail.com

Returns

interface EmailTypoFixerResult {
  original: string;               // Original input
  suggested: string | undefined;  // Corrected email (if changes were made)
  hasCorrection: boolean;         // Whether any corrections were made
}

📝 Examples of Fixes

Here are some common fixes the library handles:

  • Outlook Format: "John Doe <john.doe@example.com>""john.doe@example.com"
  • Multiple @: "user@@gmail.com""user@gmail.com"
  • Special Characters: "user.name+tag@domain.com$""user.name+tag@domain.com"
  • Domain Typos: "user@gmial.com""user@gmail.com"
  • Multiple Fixes: "John Smith <test,user@@gmial..com>""test.user@gmail.com"

For a comprehensive list of examples and edge cases, check out our test file

❤️ Acknowledgments

This project builds upon ideas from:

📄 License

MIT

🤝 Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

1.1.0

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago