UNPKG

ajt-validator

Version:

Validation library for JavaScript and TypeScript

56 lines (55 loc) 1.65 kB
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; }