UNPKG

runtyp

Version:

Lightning-fast, zero-dependency runtime validation for TS/JS. 25x faster than zod with a cleaner API.

44 lines 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.email = void 0; const tester = /^[-!#$%&'*+/0-9=?A-Z^_a-z`{|}~](\.?[-!#$%&'*+/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\.?[a-zA-Z0-9])*\.[a-zA-Z](-?[a-zA-Z0-9])+$/; const INVALID_EMAIL_ERROR = { isValid: false, errors: { root: 'must be a valid email address' }, }; /** * Validates an email address. * Taken from https://github.com/manishsaraan/email-validator/blob/master/index.js */ function email() { return (value) => { if (typeof value !== 'string') { return INVALID_EMAIL_ERROR; } const emailParts = value.split('@'); if (emailParts.length !== 2) { return INVALID_EMAIL_ERROR; } const account = emailParts[0]; const address = emailParts[1]; if (account.length > 64) { return INVALID_EMAIL_ERROR; } if (address.length > 255) { return INVALID_EMAIL_ERROR; } const domainParts = address.split('.'); if (domainParts.some((part) => part.length > 63)) { return INVALID_EMAIL_ERROR; } if (!tester.test(value)) { return INVALID_EMAIL_ERROR; } return { isValid: true, value: value, }; }; } exports.email = email; //# sourceMappingURL=email.js.map