@e-group/utils
Version:
eGroup team utils that share across projects.
78 lines (58 loc) • 1.94 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = factory;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _dateFns = require("date-fns");
var _isLength = _interopRequireDefault(require("validator/lib/isLength"));
var _isEmail = _interopRequireDefault(require("validator/lib/isEmail"));
var _isMobilePhone = _interopRequireDefault(require("validator/lib/isMobilePhone"));
class Validator {
constructor(errors, name, value) {
(0, _defineProperty2.default)(this, "errors", void 0);
(0, _defineProperty2.default)(this, "name", void 0);
(0, _defineProperty2.default)(this, "value", void 0);
this.errors = errors;
this.name = name;
this.value = value;
}
isRequired(message) {
if (!this.value) {
this.errors[this.name] = message;
}
return this;
}
isMobilePhone(message, locale) {
if (this.value && typeof this.value === 'string' && !(0, _isMobilePhone.default)(this.value, locale)) {
this.errors[this.name] = message;
}
return this;
}
isEmail(message) {
if (this.value && typeof this.value === 'string' && !(0, _isEmail.default)(this.value)) {
this.errors[this.name] = message;
}
return this;
}
lengthLimit(max, message) {
if (this.value && !(0, _isLength.default)(String(this.value), {
min: 0,
max
})) {
this.errors[this.name] = message;
}
return this;
}
isDateBefore(date, message) {
if (this.value && typeof this.value !== 'string' && (0, _dateFns.isValid)(this.value) && (0, _dateFns.isBefore)(this.value, date)) {
this.errors[this.name] = message;
}
return this;
}
}
function factory(errors, name, value) {
const validator = new Validator(errors, name, value);
return validator;
}