UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

42 lines (41 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EmailField = void 0; var _utils = require("@backland/utils"); var _FieldType = require("./FieldType"); // https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/fast/forms/resources/ValidityState-typeMismatch-email.js?q=ValidityState-typeMismatch-email.js&ss=chromium // https://stackoverflow.com/questions/46155/whats-the-best-way-to-validate-an-email-address-in-javascript/46181#46181 const emailRegex = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; class EmailField extends _FieldType.FieldType { constructor(def = {}) { super({ def: def, name: 'email' }); let { regex: _regex = emailRegex } = def; if (def.regex && !Array.isArray(def.regex)) { throw new Error(`Invalid regex definition received. Expected [string] | [string, string].`); } const regex = Array.isArray(_regex) ? new RegExp(_regex[0], _regex[1]) : _regex; this.parse = this.applyParser({ parse: input => { (0, _utils.expectedType)({ value: input }, 'string'); if (!regex.test(input)) { throw new Error(`Invalid email received.`); } return input; } }); } static create = def => { return new EmailField(def); }; } exports.EmailField = EmailField; //# sourceMappingURL=EmailField.js.map