ngx2-credit-cards
Version:
A Credit Card Directives and Reactive Form Validators package for Angular X (6+)
72 lines (71 loc) • 6.32 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as Payment from 'payment';
export class CreditCardValidator {
/**
* Validates a cc number
* @param {?} control
* @return {?}
*/
static validateCardNumber(control) {
if (control) {
/** @type {?} */
let isValid = Payment.fns.validateCardNumber(control.value);
if (!isValid) {
return {
"error": "CREDIT_CARD_INVALID"
};
}
}
return null;
}
/**
* Validates the expiry date.
* Breaks exp by "/" string and assumes that first array entry is month and second year
* Also removes any spaces
* @param {?} control
* @return {?}
*/
static validateCardExpiry(control) {
if (control) {
/** @type {?} */
let controlValue = control.value.split("/");
/** @type {?} */
let isValid = false;
if (controlValue.length > 1) {
/** @type {?} */
let month = controlValue[0].replace(/^\s+|\s+$/g, '');
/** @type {?} */
let year = controlValue[1].replace(/^\s+|\s+$/g, '');
isValid = Payment.fns.validateCardExpiry(month, year);
}
if (!isValid) {
return {
"error": "CREDIT_EXPIRY_INVALID"
};
}
}
return null;
}
/**
* Validates cards CVC
* Also removes any spaces
* @param {?} control
* @return {?}
*/
static validateCardCvc(control) {
if (control) {
/** @type {?} */
let isValid = Payment.fns.validateCardCVC(control.value);
if (!isValid) {
return {
"error": "CREDIT_CARD_INVALID"
};
}
}
return null;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlZGl0Q2FyZC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gyLWNyZWRpdC1jYXJkcy8iLCJzb3VyY2VzIjpbInZhbGlkYXRvcnMvQ3JlZGl0Q2FyZC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBRW5DLE1BQU07Ozs7OztJQU1GLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFvQjtRQUUxQyxJQUFJLE9BQU8sRUFBRTs7WUFFVCxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1RCxJQUFJLENBQUMsT0FBTyxFQUNaO2dCQUNJLE9BQU87b0JBQ0gsT0FBTyxFQUFFLHFCQUFxQjtpQkFDakMsQ0FBQTthQUNKO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztLQUNmOzs7Ozs7OztJQVFELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFvQjtRQUUxQyxJQUFJLE9BQU8sRUFBRTs7WUFFVCxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs7WUFDNUMsSUFBSSxPQUFPLEdBQVEsS0FBSyxDQUFDO1lBRXpCLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzNCOztnQkFDSSxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBQyxFQUFFLENBQUMsQ0FBQzs7Z0JBQ3JELElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDekQ7WUFFRCxJQUFJLENBQUMsT0FBTyxFQUNaO2dCQUNJLE9BQU87b0JBQ0gsT0FBTyxFQUFFLHVCQUF1QjtpQkFDbkMsQ0FBQTthQUNKO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztLQUNmOzs7Ozs7O0lBT0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFvQjtRQUV2QyxJQUFJLE9BQU8sRUFBRTs7WUFFVCxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekQsSUFBSSxDQUFDLE9BQU8sRUFDWjtnQkFDSSxPQUFPO29CQUNILE9BQU8sRUFBRSxxQkFBcUI7aUJBQ2pDLENBQUE7YUFDSjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7S0FDZjtDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBQYXltZW50IGZyb20gJ3BheW1lbnQnO1xuXG5leHBvcnQgY2xhc3MgQ3JlZGl0Q2FyZFZhbGlkYXRvciB7XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgYSBjYyBudW1iZXJcbiAgICAgKiBAcGFyYW0gY29udHJvbFxuICAgICAqL1xuICAgIHN0YXRpYyB2YWxpZGF0ZUNhcmROdW1iZXIoY29udHJvbDogRm9ybUNvbnRyb2wpIHtcblxuICAgICAgICBpZiAoY29udHJvbCkge1xuXG4gICAgICAgICAgICBsZXQgaXNWYWxpZCA9IFBheW1lbnQuZm5zLnZhbGlkYXRlQ2FyZE51bWJlcihjb250cm9sLnZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIjogXCJDUkVESVRfQ0FSRF9JTlZBTElEXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gICAgIFxuXG4gICAgICAgIHJldHVybiBudWxsOyAgIFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyB0aGUgZXhwaXJ5IGRhdGUuXG4gICAgICogQnJlYWtzIGV4cCBieSBcIi9cIiBzdHJpbmcgYW5kIGFzc3VtZXMgdGhhdCBmaXJzdCBhcnJheSBlbnRyeSBpcyBtb250aCBhbmQgc2Vjb25kIHllYXJcbiAgICAgKiBBbHNvIHJlbW92ZXMgYW55IHNwYWNlcyBcbiAgICAgKiBAcGFyYW0gY29udHJvbFxuICAgICAqL1xuICAgIHN0YXRpYyB2YWxpZGF0ZUNhcmRFeHBpcnkoY29udHJvbDogRm9ybUNvbnRyb2wpIHtcblxuICAgICAgICBpZiAoY29udHJvbCkge1xuXG4gICAgICAgICAgICBsZXQgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZS5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZCAgICAgID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChjb250cm9sVmFsdWUubGVuZ3RoID4gMSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgbW9udGggPSBjb250cm9sVmFsdWVbMF0ucmVwbGFjZSgvXlxccyt8XFxzKyQvZywnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHllYXIgPSBjb250cm9sVmFsdWVbMV0ucmVwbGFjZSgvXlxccyt8XFxzKyQvZywnJyk7XG5cbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gUGF5bWVudC5mbnMudmFsaWRhdGVDYXJkRXhwaXJ5KG1vbnRoLCB5ZWFyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIjogXCJDUkVESVRfRVhQSVJZX0lOVkFMSURcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAgICAgXG5cbiAgICAgICAgcmV0dXJuIG51bGw7IFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyBjYXJkcyBDVkNcbiAgICAgKiBBbHNvIHJlbW92ZXMgYW55IHNwYWNlcyBcbiAgICAgKiBAcGFyYW0gY29udHJvbFxuICAgICAqL1xuICAgIHN0YXRpYyB2YWxpZGF0ZUNhcmRDdmMoY29udHJvbDogRm9ybUNvbnRyb2wpIHtcblxuICAgICAgICBpZiAoY29udHJvbCkge1xuXG4gICAgICAgICAgICBsZXQgaXNWYWxpZCA9IFBheW1lbnQuZm5zLnZhbGlkYXRlQ2FyZENWQyhjb250cm9sLnZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIjogXCJDUkVESVRfQ0FSRF9JTlZBTElEXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gICAgIFxuXG4gICAgICAgIHJldHVybiBudWxsOyAgXG4gICAgfVxuXG59XG4iXX0=