UNPKG

email-misspelled

Version:

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

43 lines (42 loc) 2.1 kB
"use strict"; 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;