UNPKG

@geekbears/gb-class-validators

Version:

Geekbears custom validators using class-validator package.

32 lines (31 loc) 1.4 kB
"use strict"; 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; }, }, }); }; }