email-typo-fixer
v1.1.0
Published
A TypeScript library that fixes common email typos and formatting issues
Maintainers
Readme
📧 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 protected]")
- Handle common prefixes like "mailto:"
- Handles repeated domains (e.g., "[email protected]@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('[email protected]');
console.log(result);
// Output:
// {
// original: '[email protected]',
// suggested: '[email protected]',
// hasCorrection: true
// }
// Outlook-style email
const result2 = emailTypoFixer('John Doe <john.doe@@gmail.com>');
console.log(result2.suggested); // '[email protected]'
// With custom domains (overriding defaults)
const result3 = emailTypoFixer('[email protected]', {
domains: ['company.internal', 'corp.example.com']
});
console.log(result3.suggested); // '[email protected]'
// Combining default domains with custom domains
const result4 = emailTypoFixer('[email protected]', {
domains: [...DEFAULT_DOMAINS, 'company.com']
});
console.log(result4.suggested); // '[email protected]'📘 API
emailTypoFixer(email: string, opts?: EmailTypoFixerOptions): EmailTypoFixerResult
Parameters
email: The email address to fixopts(optional): Configuration optionsdomains: 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('[email protected]', { domainMatchDistance: 2 }); // No correction // Default behavior emailTypoFixer('[email protected]', { domainMatchDistance: 3 }); // Suggests: [email protected] // More lenient emailTypoFixer('[email protected]', { domainMatchDistance: 5 }); // Suggests: [email protected]
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 <[email protected]>"→"[email protected]" - Multiple @:
"user@@gmail.com"→"[email protected]" - Special Characters:
"[email protected]$"→"[email protected]" - Domain Typos:
"[email protected]"→"[email protected]" - Multiple Fixes:
"John Smith <test,user@@gmial..com>"→"[email protected]"
For a comprehensive list of examples and edge cases, check out our test file
❤️ Acknowledgments
This project builds upon ideas from:
- email-spell-checker - Implementation of the Sift3 algorithm and configurable domains approach
📄 License
MIT
🤝 Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
