ajt-validator
Version:
Validation library for JavaScript and TypeScript
56 lines (55 loc) • 1.65 kB
TypeScript
import { BaseValidator } from "../base";
import { ValidationResult } from "../../interfaces";
export declare enum CardType {
VISA = "visa",
MASTERCARD = "mastercard",
AMEX = "amex",
DISCOVER = "discover",
DINERS = "diners",
JCB = "jcb",
UNKNOWN = "unknown"
}
export interface CreditCardValidatorOptions {
numberRequired?: boolean;
expiryRequired?: boolean;
cvvRequired?: boolean;
nameRequired?: boolean;
allowedCardTypes?: CardType[];
validateLuhn?: boolean;
}
export interface CreditCardData {
number?: string;
expiry?: string;
cvv?: string;
name?: string;
}
export interface CreditCardResult extends CreditCardData {
cardType: CardType;
}
export type CreditCardValidationResult = ValidationResult<CreditCardResult>;
export declare class CreditCardValidator extends BaseValidator<CreditCardResult> {
private options;
private cardPatterns;
private cvvLengths;
private expiryPattern;
constructor(options?: CreditCardValidatorOptions);
validate(card: CreditCardData): CreditCardValidationResult;
/**
* Detects the credit card type based on its number pattern
*/
private detectCardType;
/**
* Validates a credit card number using the Luhn algorithm
* The Luhn algorithm creates a checksum to help validate credit card numbers
*/
private validateLuhnChecksum;
/**
* Validates that the expiry date is not in the past
*/
private validateExpiryDate;
/**
* Masks the credit card number for security purposes
* Returns format like: **** **** **** 1234
*/
private maskCardNumber;
}