@geekbears/gb-class-validators
Version:
Geekbears custom validators using class-validator package.
32 lines (31 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IsGBPhoneNumber = IsGBPhoneNumber;
const class_validator_1 = require("class-validator");
const libphonenumber_js_1 = require("libphonenumber-js");
const lodash_1 = require("lodash");
function IsGBPhoneNumber(params, validationOptions) {
return (object, propertyName) => {
(0, class_validator_1.registerDecorator)({
name: 'IsGBPhoneNumber',
target: object.constructor,
propertyName,
constraints: [[...params.dev], [...params.prod]],
options: validationOptions,
validator: {
validate(value, args) {
const [validDevRegions, validProdRegions] = args.constraints;
if (typeof value !== 'string')
return false;
const parsed = (0, libphonenumber_js_1.parsePhoneNumberFromString)(value);
if (!parsed)
return false;
if (process.env.NODE_ENV === 'production') {
return !(0, lodash_1.isEmpty)(validProdRegions) ? validProdRegions.includes(parsed.country) : true;
}
return !(0, lodash_1.isEmpty)(validDevRegions) ? validDevRegions.includes(parsed.country) : true;
},
},
});
};
}