@w.dental/credit-card-name
Version:
Lib for get credit card flag by initials numbers
67 lines (62 loc) • 2.51 kB
JavaScript
/*!
* @w.dental/credit-card-name v0.0.2
* (c) W-Dental
* Released under the MIT License.
*/
;
var CREDIT_CARD_CONFIG = [{
name: 'elo',
regexpBin: /^401178|^401179|^431274|^438935|^451416|^457393|^457631|^457632|^504175|^627780|^636297|^636368|^(506699|5067[0-6]\d|50677[0-8])|^(50900\d|5090[1-9]\d|509[1-9]\d{2})|^65003[1-3]|^(65003[5-9]|65004\d|65005[0-1])|^(65040[5-9]|6504[1-3]\d)|^(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|^(65054[1-9]|6505[5-8]\d|65059[0-8])|^(65070\d|65071[0-8])|^65072[0-7]|^(65090[1-9]|65091\d|650920)|^(65165[2-9]|6516[6-7]\d)|^(65500\d|65501\d)|^(65502[1-9]|6550[3-4]\d|65505[0-8])/,
regexpFull: /^(401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636368|(506699|5067[0-6]\d|50677[0-8])|(50900\d|5090[1-9]\d|509[1-9]\d{2})|65003[1-3]|(65003[5-9]|65004\d|65005[0-1])|(65040[5-9]|6504[1-3]\d)|(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|(65054[1-9]|6505[5-8]\d|65059[0-8])|(65070\d|65071[0-8])|65072[0-7]|(65090[1-9]|65091\d|650920)|(65165[2-9]|6516[6-7]\d)|(65500\d|65501\d)|(65502[1-9]|6550[3-4]\d|65505[0-8]))[0-9]{10,12}/,
regexpCvv: /^\d{3}$/
}, {
name: 'hipercard',
regexpBin: /^3841[046]0|^60/,
regexpFull: /^(38[0-9]{17}|60[0-9]{14})$/,
regexpCvv: /^\d{3}$/
}, {
name: 'dinners',
regexpBin: /^3(?:0[0-5]|[68][0-9])/,
regexpFull: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
regexpCvv: /^\d{3}$/
}, {
name: 'discover',
regexpBin: /^6(?:011|5[0-9]{2})/,
regexpFull: /^6(?:011|5[0-9]{2})[0-9]{12}$/,
regexpCvv: /^\d{3}$/
}, {
name: 'amex',
regexpBin: /^3[47]/,
regexpFull: /^3[47][0-9]{13}$/,
regexpCvv: /^\d{3,4}$/
}, {
name: 'aura',
regexpBin: /^50[0-9]/,
regexpFull: /^50[0-9]{14,17}$/,
regexpCvv: /^\d{3}$/
}, {
name: 'mastercard',
regexpBin: /^5[1-5][0-9][0-9]/,
regexpFull: /^5[1-5][0-9]{14}$/,
regexpCvv: /^\d{3}$/
}, {
name: 'visa',
regexpBin: /^4/,
regexpFull: /^4[0-9]{12}(?:[0-9]{3})?$/,
regexpCvv: /^\d{3}$/
}];
function getCreditCardOperatorByInitalsNumber(creditNumber) {
if (creditNumber === void 0) {
creditNumber = '';
}
try {
var normalizedCreditNumber_1 = creditNumber.replace(/\s/g, '');
var result = CREDIT_CARD_CONFIG.find(function (creditcard) {
return creditcard.regexpBin.test(normalizedCreditNumber_1);
});
return result.name;
} catch (e) {
throw new Error(creditNumber + " is an invalid value or type, please see documentations for more infos!");
}
}
module.exports = getCreditCardOperatorByInitalsNumber;