@jsbailey/reactive-form-validators
Version:
[](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) [](https://gitter.im/rxweb-project/rxweb?utm_source=badge
62 lines (61 loc) • 10 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { RegexValidator } from "../util/regex-validator";
import { RegExRule } from "../util/regex-rules";
import { ObjectMaker } from "../util/object-maker";
import { CreditCardType } from "../enums/credit-card-type";
import { ApplicationUtil } from "../util/app-util";
import { Linq } from "../util/linq";
import { AnnotationTypes } from "../core/validator.static";
/**
* @param {?} config
* @return {?}
*/
export function creditCardValidator(config) {
return (control) => {
/** @type {?} */
const controlValue = control.value;
/** @type {?} */
const formGroupValue = ApplicationUtil.getParentObjectValue(control);
config = ApplicationUtil.getConfigObject(config);
/** @type {?} */
const parentObject = (control.parent) ? control.parent.value : undefined;
if (Linq.IsPassed(formGroupValue, config.conditionalExpression, parentObject)) {
if (RegexValidator.isNotBlank(controlValue)) {
/** @type {?} */
let isValid = false;
for (let creditCardType of config.creditCardTypes) {
switch (creditCardType) {
case CreditCardType.AmericanExpress:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].AmericanExpress);
break;
case CreditCardType.DinersClub:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].DinersClub);
break;
case CreditCardType.Discover:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].Discover);
break;
case CreditCardType.JCB:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].JCB);
break;
case CreditCardType.Maestro:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].Maestro);
break;
case CreditCardType.MasterCard:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].MasterCard);
break;
case CreditCardType.Visa:
isValid = RegexValidator.isValid(controlValue, RegExRule["creditCard"].Visa);
break;
}
}
if (!isValid)
return ObjectMaker.toJson(AnnotationTypes["creditCard"], config.message || null, [controlValue]);
}
}
return ObjectMaker.null();
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGl0LWNhcmQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGpzYmFpbGV5L3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInJlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jcmVkaXQtY2FyZC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBRTNELE1BQU0sOEJBQThCLE1BQXVCO0lBQ3ZELE1BQU0sQ0FBQyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7O1FBQ3hELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7O1FBQ25DLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRSxNQUFNLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7UUFDakQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBQzFDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hELE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEtBQUssY0FBYyxDQUFDLGVBQWU7NEJBQy9CLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLGVBQVksZUFBZSxDQUFDLENBQUM7NEJBQ3JGLEtBQUssQ0FBQzt3QkFDVixLQUFLLGNBQWMsQ0FBQyxVQUFVOzRCQUMxQixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxlQUFZLFVBQVUsQ0FBQyxDQUFDOzRCQUNoRixLQUFLLENBQUM7d0JBQ1YsS0FBSyxjQUFjLENBQUMsUUFBUTs0QkFDeEIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsZUFBWSxRQUFRLENBQUMsQ0FBQzs0QkFDOUUsS0FBSyxDQUFDO3dCQUNWLEtBQUssY0FBYyxDQUFDLEdBQUc7NEJBQ25CLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLGVBQVksR0FBRyxDQUFDLENBQUM7NEJBQ3pFLEtBQUssQ0FBQzt3QkFDVixLQUFLLGNBQWMsQ0FBQyxPQUFPOzRCQUN2QixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxlQUFZLE9BQU8sQ0FBQyxDQUFDOzRCQUM3RSxLQUFLLENBQUM7d0JBQ1YsS0FBSyxjQUFjLENBQUMsVUFBVTs0QkFDMUIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsZUFBWSxVQUFVLENBQUMsQ0FBQzs0QkFDaEYsS0FBSyxDQUFDO3dCQUNWLEtBQUssY0FBYyxDQUFDLElBQUk7NEJBQ3BCLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLGVBQVksSUFBSSxDQUFDLENBQUM7NEJBQzFFLEtBQUssQ0FBQztxQkFDYjtpQkFDSjtnQkFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLGdCQUFhLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTthQUNwRztTQUNKO1FBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUU3QixDQUFBO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgVmFsaWRhdG9yRm4sXHJcbiAgICBBYnN0cmFjdENvbnRyb2xcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7IFJlZ2V4VmFsaWRhdG9yIH0gZnJvbSBcIi4uL3V0aWwvcmVnZXgtdmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7IFJlZ0V4UnVsZSB9IGZyb20gXCIuLi91dGlsL3JlZ2V4LXJ1bGVzXCI7XHJcbmltcG9ydCB7IERlY29yYXRvck5hbWUgfSBmcm9tIFwiLi4vdXRpbC9kZWNvcmF0b3ItbmFtZVwiXHJcbmltcG9ydCB7IE9iamVjdE1ha2VyIH0gZnJvbSBcIi4uL3V0aWwvb2JqZWN0LW1ha2VyXCI7XHJcbmltcG9ydCB7IENyZWRpdENhcmRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2NyZWRpdC1jYXJkLXR5cGVcIjtcclxuaW1wb3J0IHsgQ3JlZGl0Q2FyZENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL2NyZWRpdC1jYXJkLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblV0aWwgfSBmcm9tIFwiLi4vdXRpbC9hcHAtdXRpbFwiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vY29yZS92YWxpZGF0b3Iuc3RhdGljXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlZGl0Q2FyZFZhbGlkYXRvcihjb25maWc6Q3JlZGl0Q2FyZENvbmZpZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXBWYWx1ZSA9IEFwcGxpY2F0aW9uVXRpbC5nZXRQYXJlbnRPYmplY3RWYWx1ZShjb250cm9sKTtcclxuICAgICAgICBjb25maWcgPSBBcHBsaWNhdGlvblV0aWwuZ2V0Q29uZmlnT2JqZWN0KGNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgcGFyZW50T2JqZWN0ID0gKGNvbnRyb2wucGFyZW50KSA/IGNvbnRyb2wucGFyZW50LnZhbHVlIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChMaW5xLklzUGFzc2VkKGZvcm1Hcm91cFZhbHVlLCBjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uLCBwYXJlbnRPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIGlmIChSZWdleFZhbGlkYXRvci5pc05vdEJsYW5rKGNvbnRyb2xWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjcmVkaXRDYXJkVHlwZSBvZiBjb25maWcuY3JlZGl0Q2FyZFR5cGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjcmVkaXRDYXJkVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWRpdENhcmRUeXBlLkFtZXJpY2FuRXhwcmVzczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgUmVnRXhSdWxlLmNyZWRpdENhcmQuQW1lcmljYW5FeHByZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWRpdENhcmRUeXBlLkRpbmVyc0NsdWI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gUmVnZXhWYWxpZGF0b3IuaXNWYWxpZChjb250cm9sVmFsdWUsIFJlZ0V4UnVsZS5jcmVkaXRDYXJkLkRpbmVyc0NsdWIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlZGl0Q2FyZFR5cGUuRGlzY292ZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gUmVnZXhWYWxpZGF0b3IuaXNWYWxpZChjb250cm9sVmFsdWUsIFJlZ0V4UnVsZS5jcmVkaXRDYXJkLkRpc2NvdmVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWRpdENhcmRUeXBlLkpDQjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgUmVnRXhSdWxlLmNyZWRpdENhcmQuSkNCKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWRpdENhcmRUeXBlLk1hZXN0cm86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gUmVnZXhWYWxpZGF0b3IuaXNWYWxpZChjb250cm9sVmFsdWUsIFJlZ0V4UnVsZS5jcmVkaXRDYXJkLk1hZXN0cm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlZGl0Q2FyZFR5cGUuTWFzdGVyQ2FyZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgUmVnRXhSdWxlLmNyZWRpdENhcmQuTWFzdGVyQ2FyZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDcmVkaXRDYXJkVHlwZS5WaXNhOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IFJlZ2V4VmFsaWRhdG9yLmlzVmFsaWQoY29udHJvbFZhbHVlLCBSZWdFeFJ1bGUuY3JlZGl0Q2FyZC5WaXNhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIudG9Kc29uKEFubm90YXRpb25UeXBlcy5jcmVkaXRDYXJkLCBjb25maWcubWVzc2FnZSB8fCBudWxsLCBbY29udHJvbFZhbHVlXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIubnVsbCgpO1xyXG5cclxuICAgIH1cclxufVxyXG4iXX0=