diff --git a/jquery.payment/jquery.payment.d.ts b/jquery.payment/jquery.payment.d.ts index a4adc2e77..f702c6125 100644 --- a/jquery.payment/jquery.payment.d.ts +++ b/jquery.payment/jquery.payment.d.ts @@ -1,26 +1,116 @@ // Type definitions for jQuery.payment // Project: https://github.com/stripe/jquery.payment -// Definitions by: Eric J. Smith +// Definitions by: Eric J. Smith , John Rutherford // Definitions: https://github.com/borisyankov/DefinitelyTyped +declare module JQueryPayment { + + interface Payment { + /** + * Validates a card number: + * * Validates numbers + * * Validates Luhn algorithm + * * Validates length + * + * @param cardNumber The card number to validate. + */ + validateCardNumber(cardNumber: string): boolean; + + /** + * Validates a card expiry: + * * Validates numbers + * * Validates in the future + * * Supports year shorthand + * + * @param year The year to validate. + * @param month The months to validate. + */ + validateCardExpiry(year: string, month: string): boolean; + + /** + * Validates a card expiry: + * * Validates numbers + * * Validates in the future + * * Supports year shorthand + * + * @param expiry An object with the year and month to validate. + */ + validateCardExpiry(expiry: ExpiryInfo): boolean; + + /** + * Validates a card CVC: + * * Validates number + * * Validates length to 4 + * + * @param cvc The CVC value to validate. + * @param type Optional card type. + */ + validateCardCVC(cvc: string, type?: string): boolean; + + /** + * Returns a card type. The function will return null if the card type can't be determined. + * + * @param cardNumber The card number to parse. + */ + cardType(cardNumber: string): string; + + /** + * Parses a credit card expiry in the form of MM/YYYY, returning an object containing the month and + * year. Shorthand years, such as 13 are also supported (and converted into the longhand, e.g. 2013). + * + * @param monthYear The value to parse. + */ + cardExpiryVal(monthYear: string): ExpiryInfo; + + /** + * Array of objects that describe valid card types. + */ + cards: CardInfo[]; + } + + interface ExpiryInfo { + month: number; + year: number; + } + + interface CardInfo { + /** + * Card type + */ + type: string; + + /* + * Regex used to identify the card type. For the best experience, this should be + * the shortest pattern that can guarantee the card is of a particular type. + */ + pattern: RegExp; + + /** + * Array of valid card number lengths. + */ + length: number[]; + + /** + * Array of valid card CVC lengths. + */ + cvcLength: number[]; + + /** + * Boolean indicating whether a valid card number should satisfy the Luhn check. + */ + luhn: boolean; + + /** + * Regex used to format the card number. Each match is joined with a space. + */ + format: RegExp; + } +} + interface JQuery { - payment(validatorName: string); + payment(command: string): JQuery; } interface JQueryStatic { - payment: JQueryPayment; + payment: JQueryPayment.Payment; } - -interface JQueryPayment { - validateCardNumber(cardNumber: string) : boolean; - validateCardExpiry(year: string, month: string) : boolean; - validateCardExpiry(expiry: any) : boolean; - validateCardCVC(cvc: string, type: string) : boolean; - cardType(cardNumber: string): string; - cardExpiryVal(monthYear: string): JQueryPaymentExpiryInfo; -} - -interface JQueryPaymentExpiryInfo { - month: number; - year: number; -} \ No newline at end of file