@tunnel-cast/tunnel-cast
Version:
<br>
32 lines • 1.95 kB
JavaScript
;
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