UNPKG

@jsbailey/reactive-form-validators

Version:

[![npm version](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators.svg)](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) [![Gitter](https://badges.gitter.im/rx-web/Lobby.svg)](https://gitter.im/rxweb-project/rxweb?utm_source=badge

74 lines (73 loc) 10.7 kB
/** * @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==