UNPKG

@tunnel-cast/tunnel-cast

Version:

<br>

32 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IsEmail = exports.isEmailMessageBuilder = exports.isEmail = exports.IS_EMAIL = void 0; const decorator_adapter_1 = require("../../../core/factory/decorator-adapter"); const field_constraint_procedure_1 = require("../../../core/field-decorator-procedure/field-constraint.procedure"); const escape_regex_1 = require("../../../utils/escape-regex"); exports.IS_EMAIL = "is_email"; const emailRegex = /^[a-z0-9!#$%&'*+=?^_‘{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_‘{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/; const buildDomainSpecificEmailRegex = (domains) => new RegExp("^[a-z0-9!#$%&'*+=?^_‘{|}~-]+(?:.[a-z0-9!#$%&'*+=?^_‘{|}~-]+)*@(" + domains.map((dom) => `(${escape_regex_1.escapeRegex(dom)})`).join("|") + ")?$"); exports.isEmail = ({ fieldValue, args }) => { var _a; let usedEmailRegex = emailRegex; if (((_a = args === null || args === void 0 ? void 0 : args.domains) === null || _a === void 0 ? void 0 : _a.length) > 0) { usedEmailRegex = buildDomainSpecificEmailRegex(args.domains); } return typeof fieldValue == "string" && usedEmailRegex.test(fieldValue); }; exports.isEmailMessageBuilder = ({ fieldName }) => `The field ${fieldName} is a valid email`; function IsEmail(domainsOrOps, options) { const domains = arguments.length == 1 && Array.isArray(domainsOrOps) ? domainsOrOps : []; const actualOptions = arguments.length == 2 ? options : arguments.length == 1 && typeof domainsOrOps == "object" ? domainsOrOps : undefined; const adaptee = new field_constraint_procedure_1.FieldConstraintProcedure(exports.IS_EMAIL, actualOptions, { domains }, exports.isEmail, exports.isEmailMessageBuilder); return decorator_adapter_1.decoratorAdapter(adaptee); } exports.IsEmail = IsEmail; //# sourceMappingURL=is-email.decorator.js.map