@jsbailey/reactive-form-validators
Version:
[](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) [](https://gitter.im/rxweb-project/rxweb?utm_source=badge
74 lines (73 loc) • 10.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
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 function (control) {
/** @type {?} */
var controlValue = control.value;
/** @type {?} */
var formGroupValue = ApplicationUtil.getParentObjectValue(control);
config = ApplicationUtil.getConfigObject(config);
/** @type {?} */
var parentObject = (control.parent) ? control.parent.value : undefined;
if (Linq.IsPassed(formGroupValue, config.conditionalExpression, parentObject)) {
if (RegexValidator.isNotBlank(controlValue)) {
/** @type {?} */
var isValid = false;
try {
for (var _a = tslib_1.__values(config.creditCardTypes), _b = _a.next(); !_b.done; _b = _a.next()) {
var creditCardType = _b.value;
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;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_1) throw e_1.error; }
}
if (!isValid)
return ObjectMaker.toJson(AnnotationTypes["creditCard"], config.message || null, [controlValue]);
}
}
return ObjectMaker.null();
var e_1, _c;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGl0LWNhcmQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGpzYmFpbGV5L3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInJlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jcmVkaXQtY2FyZC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUUzRCxNQUFNLDhCQUE4QixNQUF1QjtJQUN2RCxNQUFNLENBQUMsVUFBQyxPQUF3Qjs7UUFDNUIsSUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzs7UUFDbkMsSUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDOztRQUNqRCxJQUFNLFlBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFDMUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDOztvQkFDcEIsR0FBRyxDQUFDLENBQXVCLElBQUEsS0FBQSxpQkFBQSxNQUFNLENBQUMsZUFBZSxDQUFBLGdCQUFBO3dCQUE1QyxJQUFJLGNBQWMsV0FBQTt3QkFDbkIsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzs0QkFDckIsS0FBSyxjQUFjLENBQUMsZUFBZTtnQ0FDL0IsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsZUFBWSxlQUFlLENBQUMsQ0FBQztnQ0FDckYsS0FBSyxDQUFDOzRCQUNWLEtBQUssY0FBYyxDQUFDLFVBQVU7Z0NBQzFCLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLGVBQVksVUFBVSxDQUFDLENBQUM7Z0NBQ2hGLEtBQUssQ0FBQzs0QkFDVixLQUFLLGNBQWMsQ0FBQyxRQUFRO2dDQUN4QixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxlQUFZLFFBQVEsQ0FBQyxDQUFDO2dDQUM5RSxLQUFLLENBQUM7NEJBQ1YsS0FBSyxjQUFjLENBQUMsR0FBRztnQ0FDbkIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsZUFBWSxHQUFHLENBQUMsQ0FBQztnQ0FDekUsS0FBSyxDQUFDOzRCQUNWLEtBQUssY0FBYyxDQUFDLE9BQU87Z0NBQ3ZCLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLGVBQVksT0FBTyxDQUFDLENBQUM7Z0NBQzdFLEtBQUssQ0FBQzs0QkFDVixLQUFLLGNBQWMsQ0FBQyxVQUFVO2dDQUMxQixPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxlQUFZLFVBQVUsQ0FBQyxDQUFDO2dDQUNoRixLQUFLLENBQUM7NEJBQ1YsS0FBSyxjQUFjLENBQUMsSUFBSTtnQ0FDcEIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsZUFBWSxJQUFJLENBQUMsQ0FBQztnQ0FDMUUsS0FBSyxDQUFDO3lCQUNiO3FCQUNKOzs7Ozs7Ozs7Z0JBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7b0JBQ1QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxnQkFBYSxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7YUFDcEc7U0FDSjtRQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7O0tBRTdCLENBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBWYWxpZGF0b3JGbixcclxuICAgIEFic3RyYWN0Q29udHJvbFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tIFwiLi4vdXRpbC9yZWdleC12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgUmVnRXhSdWxlIH0gZnJvbSBcIi4uL3V0aWwvcmVnZXgtcnVsZXNcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsL2RlY29yYXRvci1uYW1lXCJcclxuaW1wb3J0IHsgT2JqZWN0TWFrZXIgfSBmcm9tIFwiLi4vdXRpbC9vYmplY3QtbWFrZXJcIjtcclxuaW1wb3J0IHsgQ3JlZGl0Q2FyZFR5cGUgfSBmcm9tIFwiLi4vZW51bXMvY3JlZGl0LWNhcmQtdHlwZVwiO1xyXG5pbXBvcnQgeyBDcmVkaXRDYXJkQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvY3JlZGl0LWNhcmQtY29uZmlnXCI7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gXCIuLi91dGlsL2FwcC11dGlsXCI7XHJcbmltcG9ydCB7IExpbnEgfSBmcm9tIFwiLi4vdXRpbC9saW5xXCI7XHJcbmltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gXCIuLi9jb3JlL3ZhbGlkYXRvci5zdGF0aWNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVkaXRDYXJkVmFsaWRhdG9yKGNvbmZpZzpDcmVkaXRDYXJkQ29uZmlnKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cFZhbHVlID0gQXBwbGljYXRpb25VdGlsLmdldFBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wpO1xyXG4gICAgICAgIGNvbmZpZyA9IEFwcGxpY2F0aW9uVXRpbC5nZXRDb25maWdPYmplY3QoY29uZmlnKTtcclxuICAgICAgICBjb25zdCBwYXJlbnRPYmplY3QgPSAoY29udHJvbC5wYXJlbnQpID8gY29udHJvbC5wYXJlbnQudmFsdWUgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKExpbnEuSXNQYXNzZWQoZm9ybUdyb3VwVmFsdWUsIGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24sIHBhcmVudE9iamVjdCkpIHtcclxuICAgICAgICAgICAgaWYgKFJlZ2V4VmFsaWRhdG9yLmlzTm90QmxhbmsoY29udHJvbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNyZWRpdENhcmRUeXBlIG9mIGNvbmZpZy5jcmVkaXRDYXJkVHlwZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNyZWRpdENhcmRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlZGl0Q2FyZFR5cGUuQW1lcmljYW5FeHByZXNzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IFJlZ2V4VmFsaWRhdG9yLmlzVmFsaWQoY29udHJvbFZhbHVlLCBSZWdFeFJ1bGUuY3JlZGl0Q2FyZC5BbWVyaWNhbkV4cHJlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlZGl0Q2FyZFR5cGUuRGluZXJzQ2x1YjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgUmVnRXhSdWxlLmNyZWRpdENhcmQuRGluZXJzQ2x1Yik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDcmVkaXRDYXJkVHlwZS5EaXNjb3ZlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgUmVnRXhSdWxlLmNyZWRpdENhcmQuRGlzY292ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlZGl0Q2FyZFR5cGUuSkNCOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IFJlZ2V4VmFsaWRhdG9yLmlzVmFsaWQoY29udHJvbFZhbHVlLCBSZWdFeFJ1bGUuY3JlZGl0Q2FyZC5KQ0IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlZGl0Q2FyZFR5cGUuTWFlc3RybzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgUmVnRXhSdWxlLmNyZWRpdENhcmQuTWFlc3Rybyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDcmVkaXRDYXJkVHlwZS5NYXN0ZXJDYXJkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IFJlZ2V4VmFsaWRhdG9yLmlzVmFsaWQoY29udHJvbFZhbHVlLCBSZWdFeFJ1bGUuY3JlZGl0Q2FyZC5NYXN0ZXJDYXJkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWRpdENhcmRUeXBlLlZpc2E6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gUmVnZXhWYWxpZGF0b3IuaXNWYWxpZChjb250cm9sVmFsdWUsIFJlZ0V4UnVsZS5jcmVkaXRDYXJkLlZpc2EpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RNYWtlci50b0pzb24oQW5ub3RhdGlvblR5cGVzLmNyZWRpdENhcmQsIGNvbmZpZy5tZXNzYWdlIHx8IG51bGwsIFtjb250cm9sVmFsdWVdKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPYmplY3RNYWtlci5udWxsKCk7XHJcblxyXG4gICAgfVxyXG59XHJcbiJdfQ==