email-misspelled
Version:
Check misspell email's domain and return a list of matching domain suggestions
43 lines (42 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.emailMisspelled = void 0;
const contains_one_at_js_1 = require("./helpers/contains-one-at.js");
const get_domain_js_1 = require("./helpers/get-domain.js");
const string_length_checker_js_1 = require("./string-length-checker.js");
const letters_comparison_js_1 = require("./letters-comparison.js");
const domain_mapper_js_1 = require("./helpers/domain-mapper.js");
const corrector_js_1 = require("./helpers/corrector.js");
const sort_js_1 = require("./helpers/sort.js");
const sanitize_js_1 = require("./helpers/sanitize.js");
const DEFAULT_LENGTH = 3;
const MAX_MISSPELLED = 2;
const DEFAULT_PARAMS = {
lengthDiffMax: DEFAULT_LENGTH,
maxMisspelled: MAX_MISSPELLED,
domains: []
};
const DEFAULT_RETURN = [];
const emailMisspelled = ({ lengthDiffMax = DEFAULT_LENGTH, maxMisspelled = MAX_MISSPELLED, domains = [] } = DEFAULT_PARAMS) => {
if (!domains || !Array.isArray(domains) || !domains.length)
throw new Error("Please provide a domain list (for example: https://github.com/julien-amblard/email-misspelled/tree/main/src/domains)");
return (email) => {
const sanitizedEmail = (0, sanitize_js_1.sanitizeString)(email);
if (!sanitizedEmail || !(0, contains_one_at_js_1.containsOneAt)(sanitizedEmail))
return DEFAULT_RETURN;
const domain = (0, get_domain_js_1.getDomain)(sanitizedEmail);
if (domains.includes(domain))
return DEFAULT_RETURN;
const sizeFilter = (0, string_length_checker_js_1.stringLengthChecker)(domain, lengthDiffMax);
const letterFilter = (0, letters_comparison_js_1.lettersComparison)(domain, maxMisspelled);
const correctorMapper = (0, corrector_js_1.corrector)(sanitizedEmail);
const remainsDomains = domains
.filter(sizeFilter)
.map(domain_mapper_js_1.domainMapper)
.filter(letterFilter)
.map(correctorMapper)
.sort(sort_js_1.sortByCount);
return remainsDomains;
};
};
exports.emailMisspelled = emailMisspelled;