UNPKG

card-info

Version:

Get bank logo, colors, brand and etc. by card number

2 lines 6.66 kB
/* card-info v1.2.4 | Get bank logo, colors, brand and etc. by card number | https://github.com/iserdmi/card-info.git | by Sergey Dmitriev (http://srdm.io) */ !function(){function e(n,t){e._assign(this,e._defaultProps),this.options=e._assign({},e.defaultOptions,t||{}),this.numberSource=arguments.length?n:"",this.number=e._getNumber(this.numberSource);var o=e._getBank(this.number);o&&(this.bankAlias=o.alias,this.bankName=o.name,this.bankNameEn=o.nameEn,this.bankCountry=o.country,this.bankUrl=o.url,this.bankLogoPng=e._getLogo(this.options.banksLogosPath,o.logoPng),this.bankLogoSvg=e._getLogo(this.options.banksLogosPath,o.logoSvg),this.bankLogo=e._getLogoByPreferredExt(this.bankLogoPng,this.bankLogoSvg,this.options.preferredExt),this.bankLogoStyle=o.logoStyle,this.backgroundColor=o.backgroundColor,this.backgroundColors=o.backgroundColors,this.backgroundLightness=o.backgroundLightness,this.textColor=o.text),this.backgroundGradient=e._getGradient(this.backgroundColors,this.options.gradientDegrees);var s=e._getBrand(this.number);if(s){this.brandAlias=s.alias,this.brandName=s.name;var a=e._getBrandLogoBasename(this.brandAlias,this.options.brandLogoPolicy,this.backgroundLightness,this.bankLogoStyle);this.brandLogoPng=e._getLogo(this.options.brandsLogosPath,a,"png"),this.brandLogoSvg=e._getLogo(this.options.brandsLogosPath,a,"svg"),this.brandLogo=e._getLogoByPreferredExt(this.brandLogoPng,this.brandLogoSvg,this.options.preferredExt),this.codeName=s.codeName,this.codeLength=s.codeLength,this.numberLengths=s.lengths,this.numberGaps=s.gaps}this.numberBlocks=e._getBlocks(this.numberGaps,this.numberLengths),this.numberMask=e._getMask(this.options.maskDigitSymbol,this.options.maskDelimiterSymbol,this.numberBlocks),this.numberNice=e._getNumberNice(this.number,this.numberGaps)}e._defaultProps={bankAlias:null,bankName:null,bankNameEn:null,bankCountry:null,bankUrl:null,bankLogo:null,bankLogoPng:null,bankLogoSvg:null,bankLogoStyle:null,backgroundColor:"#eeeeee",backgroundColors:["#eeeeee","#dddddd"],backgroundLightness:"light",backgroundGradient:null,textColor:"#000",brandAlias:null,brandName:null,brandLogo:null,brandLogoPng:null,brandLogoSvg:null,codeName:null,codeLength:null,numberMask:null,numberGaps:[4,8,12],numberBlocks:null,numberLengths:[12,13,14,15,16,17,18,19],numberNice:null,number:null,numberSource:null,options:{}},e.defaultOptions={banksLogosPath:"/bower_components/card-info/dist/banks-logos/",brandsLogosPath:"/bower_components/card-info/dist/brands-logos/",brandLogoPolicy:"auto",preferredExt:"svg",maskDigitSymbol:"0",maskDelimiterSymbol:" ",gradientDegrees:135},e._banks={},e._prefixes={},e._brands=[{alias:"visa",name:"Visa",codeName:"CVV",codeLength:3,gaps:[4,8,12],lengths:[16],pattern:/^4\d*$/},{alias:"master-card",name:"MasterCard",codeName:"CVC",codeLength:3,gaps:[4,8,12],lengths:[16],pattern:/^(5[1-5]|222[1-9]|2[3-6]|27[0-1]|2720)\d*$/},{alias:"american-express",name:"American Express",codeName:"CID",codeLength:4,gaps:[4,10],lengths:[15],pattern:/^3[47]\d*$/},{alias:"diners-club",name:"Diners Club",codeName:"CVV",codeLength:3,gaps:[4,10],lengths:[14],pattern:/^3(0[0-5]|[689])\d*$/},{alias:"discover",name:"Discover",codeName:"CID",codeLength:3,gaps:[4,8,12],lengths:[16,19],pattern:/^(6011|65|64[4-9])\d*$/},{alias:"jcb",name:"JCB",codeName:"CVV",codeLength:3,gaps:[4,8,12],lengths:[16],pattern:/^(2131|1800|35)\d*$/},{alias:"unionpay",name:"UnionPay",codeName:"CVN",codeLength:3,gaps:[4,8,12],lengths:[16,17,18,19],pattern:/^62[0-5]\d*$/},{alias:"maestro",name:"Maestro",codeName:"CVC",codeLength:3,gaps:[4,8,12],lengths:[12,13,14,15,16,17,18,19],pattern:/^(5[0678]|6304|6390|6054|6271|67)\d*$/},{alias:"mir",name:"MIR",codeName:"CVC",codeLength:3,gaps:[4,8,12],lengths:[16],pattern:/^22\d*$/}],e._assign=function(){for(var n=arguments[0],t=1;t<arguments.length;t++){var o=arguments[t];for(var s in o)o.hasOwnProperty(s)&&(o[s]instanceof Array?n[s]=e._assign([],o[s]):n[s]=o[s])}return n},e._getNumber=function(e){var n=e+"";return/^[\d ]*$/.test(n)?n.replace(/\D/g,""):""},e._getBank=function(e){if(!(e.length<6)){var n=e.substr(0,6);return this._prefixes[n]?this._banks[this._prefixes[n]]:void 0}},e._getBrand=function(e){for(var n=[],t=0;t<this._brands.length;t++)this._brands[t].pattern.test(e)&&n.push(this._brands[t]);if(1===n.length)return n[0]},e._getLogo=function(e,n,t){return n?e+(t?n+"."+t:n):null},e._getBrandLogoBasename=function(e,n,t,o){switch(n){case"auto":return e+"-"+(o||"colored");case"colored":return e+"-colored";case"mono":return e+("light"===t?"-black":"-white");case"black":return e+"-black";case"white":return e+"-white"}},e._getLogoByPreferredExt=function(e,n,t){return e||n?e?n?e.substr(e.length-3)===t?e:n:e:n:null},e._getGradient=function(e,n){return"linear-gradient("+n+"deg, "+e.join(", ")+")"},e._getBlocks=function(e,n){for(var t=n[n.length-1],o=[],s=e.length-1;s>=0;s--){var a=t-e[s];t-=a,o.push(a)}return o.push(t),o.reverse()},e._getMask=function(e,n,t){for(var o="",s=0;s<t.length;s++)o+=(s?n:"")+Array(t[s]+1).join(e);return o},e._getNumberNice=function(e,n){for(var t=[0].concat(n).concat([e.length]),o=[],s=0;t[s]<e.length;s++){var a=t[s],r=Math.min(t[s+1],e.length);o.push(e.substring(a,r))}return o.join(" ")},e._addBanks=function(e){this._assign(this._banks,e)},e._addPrefixes=function(e){this._assign(this._prefixes,e)},e.addBanksAndPrefixes=function(e){this._addBanks(e.banks),this._addPrefixes(e.prefixes)},e.getBanks=function(n){n=e._assign({},e.defaultOptions,n||{});var t=[],o=["png","svg"],s=["Png","Svg"];for(var a in this._banks)if(this._banks.hasOwnProperty(a)){for(var r=e._assign({},this._banks[a]),i=0;i<o.length;i++){var g="logo"+s[i];r[g]&&(r[g]=e._getLogo(n.banksLogosPath,r[g]))}r.backgroundGradient=e._getGradient(r.backgroundColors,n.gradientDegrees),r.logo=e._getLogoByPreferredExt(r.logoPng,r.logoSvg,n.preferredExt),t.push(r)}return t},e.getBrands=function(n){n=e._assign({},e.defaultOptions,n||{});for(var t=[],o=["colored","black","white"],s=["png","svg"],a=["Colored","Black","White"],r=["Png","Svg"],i=0;i<this._brands.length;i++){var g=e._assign({},this._brands[i]);g.blocks=e._getBlocks(g.gaps,g.lengths),g.mask=e._getMask(n.maskDigitSymbol,n.maskDelimiterSymbol,g.blocks);for(var l=0;l<o.length;l++){for(var d="logo"+a[l],h=0;h<s.length;h++)g[d+r[h]]=e._getLogo(n.brandsLogosPath,g.alias+"-"+o[l],s[h]);g[d]=e._getLogoByPreferredExt(g[d+"Png"],g[d+"Svg"],n.preferredExt)}t.push(g)}return t},e.setDefaultOptions=function(n){this._assign(e.defaultOptions,n)},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=e),exports.CardInfo=e):"undefined"!=typeof window&&(window.CardInfo=e)}();