Socket
Socket
Sign inDemoInstall

clabe-validator

Package Overview
Dependencies
0
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.3.1 to 1.3.2

33

clabe.js

@@ -1,4 +0,2 @@

// CLABE Validator
// github.com/center-key/clabe-validator
// MIT License
// CLABE Validator -- MIT License

@@ -9,9 +7,9 @@ const clabe = {

calcChecksum: clabeNum => {
computeChecksum: clabeNum17 => {
// Returns the checksum calculated from the first 17 characters of CLABE number.
// Example:
// const checksum = clabe.calcChecksum('00201007777777777'); //value: 1
// const checksum = clabe.computeChecksum('00201007777777777'); //value: 1
let sum = 0;
const add = (digit, index) => { sum += (parseInt(digit) * [3, 7, 1][index % 3]) % 10; };
clabeNum.split('').slice(0, 17).forEach(add);
const add = (digit, index) => sum += (parseInt(digit) * [3, 7, 1][index % 3]) % 10;
clabeNum17.split('').slice(0, 17).forEach(add);
return (10 - (sum % 10)) % 10;

@@ -48,3 +46,3 @@ },

const getValidationInfo = () => {
const realChecksum = clabe.calcChecksum(clabeNum);
const realChecksum = clabe.computeChecksum(clabeNum);
const validationInfo =

@@ -62,10 +60,11 @@ clabeNum.length !== 18 ? { invalid: 'length', data: '' } :

return {
ok: valid,
error: valid ? null : 'invalid-' + validation.invalid,
message: valid ? 'Valid' : errorMap[validation.invalid] + validation.data,
tag: bank.tag,
bank: bank.name,
city: city,
account: account,
code: { bank: bankCode, city: cityCode }
ok: valid,
error: valid ? null : 'invalid-' + validation.invalid,
formatOk: valid || ['bank', 'city'].includes(validation.invalid),
message: valid ? 'Valid' : errorMap[validation.invalid] + validation.data,
tag: bank.tag,
bank: bank.name,
city: city,
account: account,
code: { bank: bankCode, city: cityCode }
};

@@ -81,3 +80,3 @@ },

const clabeNum = fit(bankCode, 3) + fit(cityCode, 3) + fit(accountNumber, 11);
return clabeNum + clabe.calcChecksum(clabeNum);
return clabeNum + clabe.computeChecksum(clabeNum);
},

@@ -84,0 +83,0 @@

@@ -1,14 +0,14 @@

//! CLABE Validator v1.3.1 ~ github.com/center-key/clabe-validator ~ MIT License
//! CLABE Validator v1.3.2 ~ github.com/center-key/clabe-validator ~ MIT License
const clabe = {
version: '1.3.1',
version: '1.3.2',
calcChecksum: clabeNum => {
computeChecksum: clabeNum17 => {
// Returns the checksum calculated from the first 17 characters of CLABE number.
// Example:
// const checksum = clabe.calcChecksum('00201007777777777'); //value: 1
// const checksum = clabe.computeChecksum('00201007777777777'); //value: 1
let sum = 0;
const add = (digit, index) => { sum += (parseInt(digit) * [3, 7, 1][index % 3]) % 10; };
clabeNum.split('').slice(0, 17).forEach(add);
const add = (digit, index) => sum += (parseInt(digit) * [3, 7, 1][index % 3]) % 10;
clabeNum17.split('').slice(0, 17).forEach(add);
return (10 - (sum % 10)) % 10;

@@ -45,3 +45,3 @@ },

const getValidationInfo = () => {
const realChecksum = clabe.calcChecksum(clabeNum);
const realChecksum = clabe.computeChecksum(clabeNum);
const validationInfo =

@@ -59,10 +59,11 @@ clabeNum.length !== 18 ? { invalid: 'length', data: '' } :

return {
ok: valid,
error: valid ? null : 'invalid-' + validation.invalid,
message: valid ? 'Valid' : errorMap[validation.invalid] + validation.data,
tag: bank.tag,
bank: bank.name,
city: city,
account: account,
code: { bank: bankCode, city: cityCode }
ok: valid,
error: valid ? null : 'invalid-' + validation.invalid,
formatOk: valid || ['bank', 'city'].includes(validation.invalid),
message: valid ? 'Valid' : errorMap[validation.invalid] + validation.data,
tag: bank.tag,
bank: bank.name,
city: city,
account: account,
code: { bank: bankCode, city: cityCode }
};

@@ -78,3 +79,3 @@ },

const clabeNum = fit(bankCode, 3) + fit(cityCode, 3) + fit(accountNumber, 11);
return clabeNum + clabe.calcChecksum(clabeNum);
return clabeNum + clabe.computeChecksum(clabeNum);
},

@@ -81,0 +82,0 @@

@@ -1,2 +0,2 @@

//! CLABE Validator v1.3.1 ~ github.com/center-key/clabe-validator ~ MIT License
function _typeof(a){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}var clabe={version:"1.3.1",calcChecksum:function c(a){var b=0;return a.split("").slice(0,17).forEach(function d(a,c){b+=parseInt(a)*[3,7,1][c%3]%10}),(10-b%10)%10},validate:function j(a){if("string"!=typeof a)throw"clabe.validator.check(clabeNum) -- Expected string, got: "+_typeof(a);var b=a.substr(0,3),c=a.substr(3,3),d=a.substr(6,11),e=parseInt(a.substr(17,1));clabe.citiesMap||function b(){clabe.citiesMap={};var a=function(a){return clabe.citiesMap[a]?clabe.citiesMap[a]+", ":""};clabe.cities.forEach(function c(b){return clabe.citiesMap[b[0]]=a(b[0])+b[1]})}();var f=clabe.banksMap[parseInt(b)]||{},g=clabe.citiesMap[parseInt(c)],h=function i(){var d=clabe.calcChecksum(a),h=18===a.length?/[^0-9]/.test(a)?{invalid:"characters",data:""}:e===d?f.tag?g?{invalid:null}:{invalid:"city",data:c}:{invalid:"bank",data:b}:{invalid:"checksum",data:d}:{invalid:"length",data:""};return h}(),i=!h.invalid;return{ok:i,error:i?null:"invalid-"+h.invalid,message:i?"Valid":{length:"Must be exactly 18 digits long",characters:"Must be only numeric digits (no letters)",checksum:"Invalid checksum, last digit should be: ",bank:"Invalid bank code: ",city:"Invalid city code: "}[h.invalid]+h.data,tag:f.tag,bank:f.name,city:g,account:d,code:{bank:b,city:c}}},calculate:function g(a,b,c){var d=function(a,b){return a.length<b?d("0"+a,b):a},e=function(a,b){return d(""+a,b).slice(-b)},f=e(a,3)+e(b,3)+e(c,11);return f+clabe.calcChecksum(f)},banksMap:{2:{tag:"BANAMEX",name:"Banco Nacional de M\xE9xico, S.A."},6:{tag:"BANCOMEXT",name:"Banco Nacional de Comercio Exterior"},9:{tag:"BANOBRAS",name:"Banco Nacional de Obras y Servicios P\xFAblicos"},12:{tag:"BBVA BANCOMER",name:"BBVA Bancomer, S.A."},14:{tag:"SANTANDER",name:"Banco Santander, S.A."},19:{tag:"BANJERCITO",name:"Banco Nacional del Ej\xE9rcito, Fuerza A\xE9rea y Armada"},21:{tag:"HSBC",name:"HSBC M\xE9xico, S.A."},22:{tag:"GE MONEY",name:"GE Money Bank, S.A."},30:{tag:"BAJ\xCDO",name:"Banco del Baj\xEDo, S.A."},32:{tag:"IXE",name:"IXE Banco, S.A."},36:{tag:"INBURSA",name:"Banco Inbursa, S.A."},37:{tag:"INTERACCIONES",name:"Banco Interacciones, S.A."},42:{tag:"MIFEL",name:"Banca Mifel, S.A."},44:{tag:"SCOTIABANK",name:"Scotiabank Inverlat, S.A."},58:{tag:"BANREGIO",name:"Banco Regional de Monterrey, S.A."},59:{tag:"INVEX",name:"Banco Invex, S.A."},60:{tag:"BANSI",name:"Bansi, S.A."},62:{tag:"AFIRME",name:"Banca Afirme, S.A."},72:{tag:"BANORTE",name:"Banco Mercantil del Norte, S.A."},102:{tag:"ABNAMRO",name:"ABN AMRO Bank M\xE9xico, S.A."},103:{tag:"AMERICAN EXPRESS",name:"American Express Bank (M\xE9xico), S.A."},106:{tag:"BAMSA",name:"Bank of America M\xE9xico, S.A."},108:{tag:"TOKYO",name:"Bank of Tokyo-Mitsubishi UFJ (M\xE9xico), S.A."},110:{tag:"JP MORGAN",name:"Banco J.P. Morgan, S.A."},112:{tag:"BMONEX",name:"Banco Monex, S.A."},113:{tag:"VE POR MAS",name:"Banco Ve por Mas, S.A."},116:{tag:"ING",name:"ING Bank (M\xE9xico), S.A."},124:{tag:"DEUTSCHE",name:"Deutsche Bank M\xE9xico, S.A."},126:{tag:"CREDIT SUISSE",name:"Banco Credit Suisse (M\xE9xico), S.A."},127:{tag:"AZTECA",name:"Banco Azteca, S.A."},128:{tag:"AUTOFIN",name:"Banco Autofin M\xE9xico, S.A."},129:{tag:"BARCLAYS",name:"Barclays Bank M\xE9xico, S.A."},130:{tag:"COMPARTAMOS",name:"Banco Compartamos, S.A."},131:{tag:"FAMSA",name:"Banco Ahorro Famsa, S.A."},132:{tag:"BMULTIVA",name:"Banco Multiva, S.A."},133:{tag:"PRUDENTIAL",name:"Prudencial Bank, S.A."},134:{tag:"WAL-MART",name:"Banco Wal Mart de M\xE9xico Adelante, S.A."},135:{tag:"NAFIN",name:"Nacional Financiera, S.N.C."},136:{tag:"REGIONAL",name:"Banco Regional, S.A."},137:{tag:"BANCOPPEL",name:"BanCoppel, S.A."},138:{tag:"ABC CAPITAL",name:"ABC Capital, S.A. I.B.M."},139:{tag:"UBS BANK",name:"UBS Banco, S.A."},140:{tag:"F\xC1CIL",name:"Banco F\xE1cil, S.A."},141:{tag:"VOLKSWAGEN",name:"Volkswagen Bank S.A. Instituci\xF3n de Banca M\xFAltiple"},143:{tag:"CIBANCO",name:"Consultor\xEDa Internacional Banco, S.A."},145:{tag:"BBASE",name:"Banco BASE, S.A. de I.B.M."},147:{tag:"BANKAOOL",name:"Bankaool, S.A., Instituci\xF3n de Banca M\xFAltiple"},148:{tag:"PAGATODO",name:"Banco PagaTodo S.A., Instituci\xF3n de Banca M\xFAltiple"},150:{tag:"BIM",name:"Banco Inmobiliario Mexicano, S.A., Instituci\xF3n de Banca M\xFAltiple"},156:{tag:"SABADELL",name:"Banco Sabadell, S.A. I.B.M."},166:{tag:"BANSEFI",name:"Banco del Ahorro Nacional y Servicios Financieros, S.N.C."},168:{tag:"HIPOTECARIA FEDERAL",name:"Sociedad Hipotecaria Federal, S.N.C."},600:{tag:"MONEXCB",name:"Monex Casa de Bolsa, S.A. de C.V."},601:{tag:"GBM",name:"GBM Grupo Burs\xE1til Mexicano, S.A. de C.V."},602:{tag:"MASARI CC.",name:"Masari Casa de Cambio, S.A. de C.V."},604:{tag:"C.B. INBURSA",name:"Inversora Burs\xE1til, S.A. de C.V."},605:{tag:"VALU\xC9",name:"Valu\xE9, S.A. de C.V., Casa de Bolsa"},606:{tag:"CB BASE",name:"Base Internacional Casa de Bolsa, S.A. de C.V."},607:{tag:"TIBER",name:"Casa de Cambio Tiber, S.A. de C.V."},608:{tag:"VECTOR",name:"Vector Casa de Bolsa, S.A. de C.V."},610:{tag:"B&B",name:"B y B Casa de Cambio, S.A. de C.V."},611:{tag:"INTERCAM",name:"Intercam Casa de Cambio, S.A. de C.V."},613:{tag:"MULTIVA",name:"Multivalores Casa de Bolsa, S.A. de C.V. Multiva Gpo. Fin."},614:{tag:"ACCIVAL",name:"Acciones y Valores Banamex, S.A. de C.V., Casa de Bolsa"},615:{tag:"MERRILL LYNCH",name:"Merrill Lynch M\xE9xico, S.A. de C.V., Casa de Bolsa"},616:{tag:"FINAMEX",name:"Casa de Bolsa Finamex, S.A. de C.V."},617:{tag:"VALMEX",name:"Valores Mexicanos Casa de Bolsa, S.A. de C.V."},618:{tag:"\xDANICA",name:"\xDAnica Casa de Cambio, S.A. de C.V."},619:{tag:"ASEGURADORA MAPFRE",name:"MAPFRE Tepeyac S.A."},620:{tag:"AFORE PROFUTURO",name:"Profuturo G.N.P., S.A. de C.V."},621:{tag:"CB ACTINBER",name:"Actinver Casa de Bolsa, S.A. de C.V."},622:{tag:"ACTINVE SI",name:"Actinver S.A. de C.V."},623:{tag:"SKANDIA",name:"Skandia Vida S.A. de C.V."},624:{tag:"CONSULTOR\xCDA",name:"Consultor\xEDa Internacional Casa de Cambio, S.A. de C.V."},626:{tag:"CBDEUTSCHE",name:"Deutsche Securities, S.A. de C.V."},627:{tag:"ZURICH",name:"Zurich Compa\xF1\xEDa de Seguros, S.A."},628:{tag:"ZURICHVI",name:"Zurich Vida, Compa\xF1\xEDa de Seguros, S.A."},629:{tag:"HIPOTECARIA SU CASITA",name:"Hipotecaria su Casita, S.A. de C.V."},630:{tag:"C.B. INTERCAM",name:"Intercam Casa de Bolsa, S.A. de C.V."},631:{tag:"C.B. VANGUARDIA",name:"Vanguardia Casa de Bolsa, S.A. de C.V."},632:{tag:"BULLTICK C.B.",name:"Bulltick Casa de Bolsa, S.A. de C.V."},633:{tag:"STERLING",name:"Sterling Casa de Cambio, S.A. de C.V."},634:{tag:"FINCOMUN",name:"Fincom\xFAn, Servicios Financieros Comunitarios, S.A. de C.V."},636:{tag:"HDI SEGUROS",name:"HDI Seguros, S.A. de C.V."},637:{tag:"ORDER",name:"OrderExpress Casa de Cambio , S.A. de C.V. AAC"},638:{tag:"AKALA",name:"Akala, S.A. de C.V., Sociedad Financiera Popular"},640:{tag:"JP MORGAN C.B.",name:"J.P. Morgan Casa de Bolsa, S.A. de C.V."},642:{tag:"REFORMA",name:"Operadora de Recursos Reforma, S.A. de C.V."},646:{tag:"STP",name:"Sistema de Transferencias y Pagos STP, S.A. de C.V., SOFOM E.N.R."},647:{tag:"TELECOMM",name:"Telecomunicaciones de M\xE9xico"},648:{tag:"EVERCORE",name:"Evercore Casa de Bolsa, S.A. de C.V."},649:{tag:"SKANDIA",name:"Skandia Operadora S.A. de C.V."},651:{tag:"SEGMTY",name:"Seguros Monterrey New York Life, S.A de C.V."},652:{tag:"ASEA",name:"Soluci\xF3n Asea, S.A. de C.V., Sociedad Financiera Popular"},653:{tag:"KUSPIT",name:"Kuspit Casa de Bolsa, S.A. de C.V."},655:{tag:"SOFIEXPRESS",name:"J.P. SOFIEXPRESS, S.A. de C.V., S.F.P."},656:{tag:"UNAGRA",name:"UNAGRA, S.A. de C.V., S.F.P."},659:{tag:"OPCIONES EMPRESARIALES DEL NOROESTE",name:"Opciones Empresariales Del Noreste, S.A. DE C.V."},670:{tag:"LIBERTAD",name:"Libertad Servicios Financieros, S.A. De C.V."},846:{tag:"STP",name:"Sistema de Transferencias y Pagos STP"},901:{tag:"CLS",name:"CLS Bank International"},902:{tag:"INDEVAL",name:"SD. INDEVAL, S.A. de C.V."},999:{tag:"N/A",name:"N/A"}},cities:[[10,"Aguascalientes"],[12,"Calvillo"],[14,"Jes\xFAs Mar\xEDa"],[20,"Mexicali"],[22,"Ensenada"],[27,"Tecate"],[27,"Tijuana"],[28,"La Mesa"],[28,"Rosarito"],[28,"Tijuana [alternate]"],[40,"La Paz"],[41,"Cabo San Lucas"],[42,"Ciudad Constituci\xF3n"],[43,"Guerrero Negro"],[45,"San Jos\xE9 del Cabo"],[46,"Santa Rosal\xEDa"],[50,"Campeche"],[51,"Calkin\xED"],[52,"Ciudad del Carmen"],[53,"Champot\xF3n"],[60,"G\xF3mez Palacio"],[60,"Torre\xF3n"],[62,"Ciudad Acu\xF1a"],[68,"Monclova"],[71,"Nava"],[72,"Nueva Rosita"],[74,"Parras de la Fuente"],[75,"Piedras Negras"],[76,"Ramos Arizpe"],[77,"Sabinas"],[78,"Saltillo"],[80,"San Pedro de las Colonias"],[90,"Colima"],[95,"Manzanillo"],[97,"Tecom\xE1n"],[100,"Ter\xE1n"],[100,"Tuxtla Guti\xE9rrez"],[103,"Arriaga"],[107,"Cintalapa"],[109,"Comit\xE1n"],[109,"Villa Las Rosas"],[111,"Chiapa de Corso"],[113,"F. Comalapa"],[114,"Huixtla"],[123,"Ocosingo"],[124,"Ocozocuautla"],[125,"Palenque"],[126,"Pichucalco"],[127,"Pijijiapan"],[128,"Reforma"],[130,"San Crist\xF3bal de las Casas"],[131,"Simojovel"],[133,"Tapachula"],[135,"Tonala"],[137,"Venustiano Carranza"],[138,"Villa Flores"],[140,"Yajal\xF3n"],[150,"Chihuahua"],[150,"Ciudad Delicias"],[152,"Ciudad An\xE1huac"],[155,"Ciudad Camargo"],[158,"Ciudad Cuauht\xE9moc"],[161,"Ciudad Guerrero"],[162,"Parral"],[163,"Ciudad Jim\xE9nez"],[164,"Ciudad Ju\xE1rez"],[165,"Ciudad Madera"],[167,"El Molino de Namiquipa"],[168,"Nuevo Casas Grandes"],[180,"Atizapan"],[180,"Chalco"],[180,"Ciudad de M\xE9xico"],[180,"Coacalco"],[180,"Cuautitl\xE1n Izcalli"],[180,"Cuautitl\xE1n"],[180,"Ecatepec"],[180,"Huehuetoca"],[180,"Huixquilucan"],[180,"Ixtapaluca"],[180,"Los Reyes La Paz"],[180,"Naucalpan"],[180,"Nezahualc\xF3yotl"],[180,"Tecamac"],[180,"Teotihuac\xE1n"],[180,"Texcoco"],[180,"Tlalnepantla"],[190,"Durango"],[198,"N/A"],[201,"Tepehuanes"],[202,"Vicente Guerrero"],[210,"Guanajuato"],[211,"Abasolo"],[212,"Ac\xE1mbaro"],[213,"Apaseo el Alto"],[214,"Apaseo el Grande"],[215,"Celaya"],[216,"Comonfort"],[217,"Coroneo"],[218,"Cortazar"],[219,"Cuer\xE1maro"],[220,"Dolores Hidalgo"],[222,"Irapuato"],[223,"Jaral del Progreso"],[224,"Jer\xE9cuaro"],[225,"Le\xF3n"],[226,"Cd. Manuel Doblado"],[227,"Morole\xF3n"],[229,"P\xE9njamo"],[232,"Romita"],[233,"Salamanca"],[234,"Salvatierra"],[236,"San Felipe"],[237,"Pur\xEDsima de Bustos"],[237,"San Francisco del Rinco\xF3n"],[238,"San Jos\xE9 Iturbide"],[239,"San Luis de la Paz"],[240,"San Miguel Allende"],[244,"Silao"],[247,"Uriangato"],[248,"Valle de Santiago"],[249,"Yuriria"],[260,"Chilpancingo"],[261,"Acapulco"],[263,"Arcelia"],[264,"Atoyac de \xC1lvarez"],[266,"Ciudad Altamirano"],[267,"Coyuca de Ben\xEDtez"],[270,"Chilapa"],[271,"Huitzuco"],[272,"Iguala"],[272,"La Sabana"],[274,"Cuajinicuilapa"],[274,"Ometepec"],[275,"San Marcos"],[276,"Taxco"],[278,"Teloloapan"],[281,"Tlapa"],[282,"Ixtapa Zihuatanejo"],[282,"Zihuatanejo"],[290,"Pachuca"],[291,"Actopan"],[292,"Apam"],[293,"Atotonilco el Grande"],[294,"Ciudad Sahag\xFAn"],[294,"Teocaltiche"],[295,"Cuautepec"],[296,"Huejutla"],[297,"Huichapan"],[298,"Ixmiquilpan"],[303,"Progreso de Obreg\xF3n"],[305,"Tepeapulco"],[308,"Tizayuca"],[311,"Tula de Allende"],[312,"Tulancingo"],[313,"Zacualtip\xE1n"],[314,"Zimap\xE1n"],[320,"El Salto"],[320,"Guadalajara"],[320,"San Pedro Tlaquepaque"],[320,"Tlajomulco"],[320,"Tonala [alternate]"],[320,"Zapopan"],[326,"Ameca"],[327,"Arandas"],[330,"Atotonilco el Alto"],[331,"Atequiza"],[333,"Autl\xE1n"],[334,"Azteca"],[340,"Casimiro Castillo"],[341,"Cihuatl\xE1n"],[342,"Ciudad Guzm\xE1n"],[346,"Chapala"],[348,"El Grullo"],[355,"Ixtlahuac\xE1n del R\xEDo"],[356,"Jalostotitl\xE1n"],[357,"Jamay"],[361,"La Barca"],[362,"Lagos de Moreno"],[370,"Ocotl\xE1n"],[373,"Pihuamo"],[375,"Las Juntas"],[375,"Nuevo Vallarta"],[375,"Pitillal"],[375,"Puerto Vallarta"],[381,"San Juan de los Lagos"],[382,"N/A"],[384,"San Miguel el Alto"],[385,"San Patricio Melaque"],[386,"Sayula"],[387,"Tala"],[389,"Tamazula de Gordiano"],[391,"Tecalitl\xE1n"],[396,"Tepatitl\xE1n"],[397,"Tequila"],[403,"Tototl\xE1n"],[404,"T\xFAxpam"],[411,"Villa Hidalgo"],[413,"Zacoalco de Torres"],[414,"Zapotiltic"],[416,"Zapotlanejo"],[420,"Toluca"],[421,"Acambay"],[422,"Almoloya de Ju\xE1rez"],[424,"Amecameca"],[425,"Apaxco"],[426,"Atlacomulco"],[428,"Coatepec de Harinas"],[430,"Chicoloapan"],[431,"Chiconcuac"],[432,"El Oro"],[433,"Ixtapan de la Sal"],[434,"Ixtlahuaca"],[435,"Jilotepec"],[438,"Lerma"],[441,"Metepec"],[443,"Otumba"],[445,"San Mateo Atenco"],[446,"Tejupilco"],[448,"Temascaltepec"],[449,"Temoaya"],[450,"Tenancingo"],[451,"Tenago del Valle"],[453,"Santiago Tiangistenco"],[455,"Tultepec"],[456,"Tultitl\xE1n"],[457,"Valle de Bravo"],[460,"Villa Nicol\xE1s Romero"],[463,"Zumpango"],[470,"Morelia"],[472,"Aguililla"],[476,"Apatzing\xE1n"],[480,"Ciudad Hidalgo"],[483,"Cotija"],[484,"Cuitzeo"],[492,"Huetamo"],[493,"Jacona"],[494,"Jiquilpan"],[496,"La Piedad"],[497,"L\xE1zaro C\xE1rdenas"],[498,"Los Reyes"],[499,"Maravat\xEDo"],[501,"Nueva Italia"],[506,"P\xE1tzcuaro"],[508,"Pur\xE9pero"],[509,"Puruandiro"],[512,"Sahuayo"],[515,"Tac\xE1mbaro"],[517,"Tanganc\xEDcuaro"],[519,"Tepalcatepec"],[523,"Tlazazalca"],[528,"Uruapan"],[533,"Yur\xE9cuaro"],[534,"Zacapu"],[535,"Zamora"],[536,"Zinap\xE9cuaro"],[537,"Zit\xE1cuaro"],[540,"Cuernavaca"],[542,"Cuautla"],[542,"Oaxtepec, Morelos"],[543,"Jiutepec"],[544,"Jojutla"],[545,"Puente de Ixtla"],[546,"Temixco"],[548,"Tetecala"],[549,"Yautepec"],[552,"Zacatepec"],[560,"Tepic"],[561,"Acaponeta"],[562,"Ahuacatl\xE1n"],[564,"Compostela"],[566,"Ixtl\xE1n del R\xEDo"],[571,"San Blas"],[573,"Santiago Ixcuintla"],[575,"T\xFAxpam [alternate]"],[580,"Apodaca"],[580,"Cadereyta"],[580,"Cd. Guadalupe"],[580,"General Escobedo"],[580,"Monterrey"],[580,"San Nicol\xE1s de los Garza"],[580,"San Pedro Garza Garc\xEDa"],[580,"Santa Catarina"],[583,"Allende"],[592,"General Zuazua"],[595,"Linares"],[597,"Montemorelos"],[599,"Sabinas Hidalgo"],[600,"Salinas Victoria"],[601,"El Cercado"],[601,"Villa de Santiago"],[610,"Oaxaca"],[613,"Tlaxiaco"],[614,"Huajuapan de Le\xF3n"],[616,"Ixtepec"],[617,"Juchit\xE1n"],[619,"Loma Bonita"],[620,"Mat\xEDas Romero"],[621,"Miahuatl\xE1n"],[622,"Ocotl\xE1n [alternate]"],[624,"Puerto Escondido"],[626,"Salina Cruz"],[627,"Lagunas"],[628,"Tuxtepec"],[630,"Pochutla"],[631,"San Pedro Tapanatepec"],[632,"Santa Luc\xEDa del Camino"],[634,"Bah\xEDas de Huatulco"],[635,"Santiago Juxtlahuaca"],[636,"Pinotepa Nacional"],[637,"Tehuantepec"],[638,"Tlacolula"],[640,"Zimatl\xE1n"],[650,"Cholula"],[650,"La Resurrecci\xF3n"],[650,"Puebla"],[650,"San Baltazar Campeche"],[651,"N/A"],[652,"Acatzingo"],[654,"Atlixco"],[656,"Cuetzalan"],[659,"Huauchinango"],[662,"Iz\xFAcar de Matamoros"],[667,"San Mart\xEDn Texmelucan"],[668,"San Felipe Hueyotlipan"],[669,"Tecamachalco"],[670,"Tehuac\xE1n"],[671,"San Lorenzo"],[672,"Teziutl\xE1n"],[674,"Xicotepec de Ju\xE1rez"],[676,"Zacatl\xE1n"],[680,"Pedro Escobedo"],[680,"Quer\xE9taro"],[680,"Villa Corregidora"],[681,"Amealco"],[685,"San Juan del R\xEDo"],[686,"Tequisquiapan"],[690,"Chetumal"],[691,"Canc\xFAn"],[691,"Col. Puerto Ju\xE1rez"],[692,"Cozumel"],[693,"N/A"],[694,"Playa del Carmen"],[700,"San Luis Potos\xED"],[703,"Cerritos"],[705,"Ciudad Valles"],[709,"Matehuala"],[711,"R\xEDo Verde"],[716,"Tamu\xEDn"],[730,"Culiac\xE1n"],[735,"Concordia"],[736,"Cosala"],[737,"Choix"],[738,"El Fuerte"],[739,"Escuinapa"],[740,"Guam\xFAchil"],[741,"Guasave"],[743,"Los Mochis"],[743,"Topolobampo"],[744,"Mazatl\xE1n"],[745,"Mocorito"],[746,"Navolato"],[760,"Hermosillo"],[761,"Agua Prieta"],[765,"Caborca"],[766,"Cananea"],[767,"Ciudad Obreg\xF3n"],[767,"Esperanza"],[769,"Empalme"],[770,"Guaymas"],[770,"San Carlos"],[771,"Huatabampo"],[773,"Magdalena"],[776,"Nacozari de Garc\xEDa"],[777,"Navojoa"],[778,"Nogales"],[779,"Puerto Pe\xF1asco"],[780,"San Luis R\xEDo Colorado"],[790,"Tamulte"],[790,"Villa Hermosa"],[792,"C\xE1rdenas"],[793,"Ciudad Pemex"],[794,"Comalcalco"],[796,"Emiliano Zapata"],[797,"Frontera"],[798,"Huimanguillo"],[800,"Jalpa de M\xE9ndez"],[802,"Macuspana"],[803,"Nacajuca"],[804,"Para\xEDso"],[805,"Tacotalpa"],[806,"Teapa"],[807,"Tenosique"],[810,"Ciudad Victoria"],[811,"Altamira"],[813,"Ciudad Madero"],[813,"Tampico"],[814,"Ciudad Mante"],[818,"Matamoros"],[821,"Colombia"],[821,"Nuevo Laredo"],[822,"Reynosa"],[823,"R\xEDo Bravo"],[825,"Soto La Marina"],[826,"Valle Hermoso"],[830,"Tlaxcala"],[832,"Apizaco"],[834,"Santa Ana Chiautempan"],[840,"Jalapa"],[841,"Acayucan"],[843,"Agua Dulce"],[845,"\xC1lamo"],[846,"Altotonga"],[848,"Banderilla"],[849,"Boca del R\xEDo"],[852,"Ciudad Mendoza"],[853,"Coatepec"],[854,"Coatzacoalcos"],[855,"C\xF3rdoba"],[856,"Cosamaloapan"],[860,"Cuitl\xE1huac"],[863,"Fort\xEDn de las Flores"],[864,"Guti\xE9rrez Zamora"],[865,"Huatusco"],[867,"Isla"],[868,"Ixtaczoquitl\xE1n"],[869,"J\xE1ltipan"],[871,"Juan Rodr\xEDguez Clara"],[872,"Villa Jos\xE9 Cardel"],[873,"Las Choapas"],[875,"Naranjos"],[876,"Mart\xEDnez de la Torre"],[877,"Minatitl\xE1n"],[878,"Misantla"],[879,"Nanchital"],[882,"Orizaba"],[885,"Papantla"],[886,"Perote"],[888,"Poza Rica"],[889,"R\xEDo Blanco"],[890,"San Andr\xE9s Tuxtla"],[891,"San Rafael"],[894,"Plat\xF3n S\xE1nchez"],[894,"Tantoyuca"],[895,"Tempoal"],[898,"Tierra Blanca"],[901,"Tlapacoyan"],[903,"T\xFAxpam de Rodr\xEDguez Cano"],[905,"Cd. Industrial Framboyan"],[905,"Veracruz"],[910,"M\xE9rida"],[913,"Motul"],[914,"Oxkutzcab"],[915,"Progreso"],[917,"Ticul"],[918,"Tizim\xEDn"],[920,"Valladolid"],[930,"Zacatecas"],[933,"Fresnillo"],[934,"Guadalupe"],[935,"Jalpa"],[936,"Jerez de G. Salinas"],[938,"Juchipila"],[939,"Loreto"],[946,"Nochistl\xE1n"],[958,"Valpara\xEDso"],[960,"Calera de V. Rosales"]]};"object"===("undefined"==typeof module?"undefined":_typeof(module))&&(module.exports=clabe),"object"===("undefined"==typeof window?"undefined":_typeof(window))&&(window.clabe=clabe);
//! CLABE Validator v1.3.2 ~ github.com/center-key/clabe-validator ~ MIT License
function _typeof(a){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}var clabe={version:"1.3.2",computeChecksum:function c(a){var b=0;return a.split("").slice(0,17).forEach(function d(a,c){return b+=parseInt(a)*[3,7,1][c%3]%10}),(10-b%10)%10},validate:function j(a){if("string"!=typeof a)throw"clabe.validator.check(clabeNum) -- Expected string, got: "+_typeof(a);var b=a.substr(0,3),c=a.substr(3,3),d=a.substr(6,11),e=parseInt(a.substr(17,1));clabe.citiesMap||function b(){clabe.citiesMap={};var a=function(a){return clabe.citiesMap[a]?clabe.citiesMap[a]+", ":""};clabe.cities.forEach(function c(b){return clabe.citiesMap[b[0]]=a(b[0])+b[1]})}();var f=clabe.banksMap[parseInt(b)]||{},g=clabe.citiesMap[parseInt(c)],h=function i(){var d=clabe.computeChecksum(a),h=18===a.length?/[^0-9]/.test(a)?{invalid:"characters",data:""}:e===d?f.tag?g?{invalid:null}:{invalid:"city",data:c}:{invalid:"bank",data:b}:{invalid:"checksum",data:d}:{invalid:"length",data:""};return h}(),i=!h.invalid;return{ok:i,error:i?null:"invalid-"+h.invalid,formatOk:i||["bank","city"].includes(h.invalid),message:i?"Valid":{length:"Must be exactly 18 digits long",characters:"Must be only numeric digits (no letters)",checksum:"Invalid checksum, last digit should be: ",bank:"Invalid bank code: ",city:"Invalid city code: "}[h.invalid]+h.data,tag:f.tag,bank:f.name,city:g,account:d,code:{bank:b,city:c}}},calculate:function g(a,b,c){var d=function(a,b){return a.length<b?d("0"+a,b):a},e=function(a,b){return d(""+a,b).slice(-b)},f=e(a,3)+e(b,3)+e(c,11);return f+clabe.computeChecksum(f)},banksMap:{2:{tag:"BANAMEX",name:"Banco Nacional de M\xE9xico, S.A."},6:{tag:"BANCOMEXT",name:"Banco Nacional de Comercio Exterior"},9:{tag:"BANOBRAS",name:"Banco Nacional de Obras y Servicios P\xFAblicos"},12:{tag:"BBVA BANCOMER",name:"BBVA Bancomer, S.A."},14:{tag:"SANTANDER",name:"Banco Santander, S.A."},19:{tag:"BANJERCITO",name:"Banco Nacional del Ej\xE9rcito, Fuerza A\xE9rea y Armada"},21:{tag:"HSBC",name:"HSBC M\xE9xico, S.A."},22:{tag:"GE MONEY",name:"GE Money Bank, S.A."},30:{tag:"BAJ\xCDO",name:"Banco del Baj\xEDo, S.A."},32:{tag:"IXE",name:"IXE Banco, S.A."},36:{tag:"INBURSA",name:"Banco Inbursa, S.A."},37:{tag:"INTERACCIONES",name:"Banco Interacciones, S.A."},42:{tag:"MIFEL",name:"Banca Mifel, S.A."},44:{tag:"SCOTIABANK",name:"Scotiabank Inverlat, S.A."},58:{tag:"BANREGIO",name:"Banco Regional de Monterrey, S.A."},59:{tag:"INVEX",name:"Banco Invex, S.A."},60:{tag:"BANSI",name:"Bansi, S.A."},62:{tag:"AFIRME",name:"Banca Afirme, S.A."},72:{tag:"BANORTE",name:"Banco Mercantil del Norte, S.A."},102:{tag:"ABNAMRO",name:"ABN AMRO Bank M\xE9xico, S.A."},103:{tag:"AMERICAN EXPRESS",name:"American Express Bank (M\xE9xico), S.A."},106:{tag:"BAMSA",name:"Bank of America M\xE9xico, S.A."},108:{tag:"TOKYO",name:"Bank of Tokyo-Mitsubishi UFJ (M\xE9xico), S.A."},110:{tag:"JP MORGAN",name:"Banco J.P. Morgan, S.A."},112:{tag:"BMONEX",name:"Banco Monex, S.A."},113:{tag:"VE POR MAS",name:"Banco Ve por Mas, S.A."},116:{tag:"ING",name:"ING Bank (M\xE9xico), S.A."},124:{tag:"DEUTSCHE",name:"Deutsche Bank M\xE9xico, S.A."},126:{tag:"CREDIT SUISSE",name:"Banco Credit Suisse (M\xE9xico), S.A."},127:{tag:"AZTECA",name:"Banco Azteca, S.A."},128:{tag:"AUTOFIN",name:"Banco Autofin M\xE9xico, S.A."},129:{tag:"BARCLAYS",name:"Barclays Bank M\xE9xico, S.A."},130:{tag:"COMPARTAMOS",name:"Banco Compartamos, S.A."},131:{tag:"FAMSA",name:"Banco Ahorro Famsa, S.A."},132:{tag:"BMULTIVA",name:"Banco Multiva, S.A."},133:{tag:"PRUDENTIAL",name:"Prudencial Bank, S.A."},134:{tag:"WAL-MART",name:"Banco Wal Mart de M\xE9xico Adelante, S.A."},135:{tag:"NAFIN",name:"Nacional Financiera, S.N.C."},136:{tag:"REGIONAL",name:"Banco Regional, S.A."},137:{tag:"BANCOPPEL",name:"BanCoppel, S.A."},138:{tag:"ABC CAPITAL",name:"ABC Capital, S.A. I.B.M."},139:{tag:"UBS BANK",name:"UBS Banco, S.A."},140:{tag:"F\xC1CIL",name:"Banco F\xE1cil, S.A."},141:{tag:"VOLKSWAGEN",name:"Volkswagen Bank S.A. Instituci\xF3n de Banca M\xFAltiple"},143:{tag:"CIBANCO",name:"Consultor\xEDa Internacional Banco, S.A."},145:{tag:"BBASE",name:"Banco BASE, S.A. de I.B.M."},147:{tag:"BANKAOOL",name:"Bankaool, S.A., Instituci\xF3n de Banca M\xFAltiple"},148:{tag:"PAGATODO",name:"Banco PagaTodo S.A., Instituci\xF3n de Banca M\xFAltiple"},150:{tag:"BIM",name:"Banco Inmobiliario Mexicano, S.A., Instituci\xF3n de Banca M\xFAltiple"},156:{tag:"SABADELL",name:"Banco Sabadell, S.A. I.B.M."},166:{tag:"BANSEFI",name:"Banco del Ahorro Nacional y Servicios Financieros, S.N.C."},168:{tag:"HIPOTECARIA FEDERAL",name:"Sociedad Hipotecaria Federal, S.N.C."},600:{tag:"MONEXCB",name:"Monex Casa de Bolsa, S.A. de C.V."},601:{tag:"GBM",name:"GBM Grupo Burs\xE1til Mexicano, S.A. de C.V."},602:{tag:"MASARI CC.",name:"Masari Casa de Cambio, S.A. de C.V."},604:{tag:"C.B. INBURSA",name:"Inversora Burs\xE1til, S.A. de C.V."},605:{tag:"VALU\xC9",name:"Valu\xE9, S.A. de C.V., Casa de Bolsa"},606:{tag:"CB BASE",name:"Base Internacional Casa de Bolsa, S.A. de C.V."},607:{tag:"TIBER",name:"Casa de Cambio Tiber, S.A. de C.V."},608:{tag:"VECTOR",name:"Vector Casa de Bolsa, S.A. de C.V."},610:{tag:"B&B",name:"B y B Casa de Cambio, S.A. de C.V."},611:{tag:"INTERCAM",name:"Intercam Casa de Cambio, S.A. de C.V."},613:{tag:"MULTIVA",name:"Multivalores Casa de Bolsa, S.A. de C.V. Multiva Gpo. Fin."},614:{tag:"ACCIVAL",name:"Acciones y Valores Banamex, S.A. de C.V., Casa de Bolsa"},615:{tag:"MERRILL LYNCH",name:"Merrill Lynch M\xE9xico, S.A. de C.V., Casa de Bolsa"},616:{tag:"FINAMEX",name:"Casa de Bolsa Finamex, S.A. de C.V."},617:{tag:"VALMEX",name:"Valores Mexicanos Casa de Bolsa, S.A. de C.V."},618:{tag:"\xDANICA",name:"\xDAnica Casa de Cambio, S.A. de C.V."},619:{tag:"ASEGURADORA MAPFRE",name:"MAPFRE Tepeyac S.A."},620:{tag:"AFORE PROFUTURO",name:"Profuturo G.N.P., S.A. de C.V."},621:{tag:"CB ACTINBER",name:"Actinver Casa de Bolsa, S.A. de C.V."},622:{tag:"ACTINVE SI",name:"Actinver S.A. de C.V."},623:{tag:"SKANDIA",name:"Skandia Vida S.A. de C.V."},624:{tag:"CONSULTOR\xCDA",name:"Consultor\xEDa Internacional Casa de Cambio, S.A. de C.V."},626:{tag:"CBDEUTSCHE",name:"Deutsche Securities, S.A. de C.V."},627:{tag:"ZURICH",name:"Zurich Compa\xF1\xEDa de Seguros, S.A."},628:{tag:"ZURICHVI",name:"Zurich Vida, Compa\xF1\xEDa de Seguros, S.A."},629:{tag:"HIPOTECARIA SU CASITA",name:"Hipotecaria su Casita, S.A. de C.V."},630:{tag:"C.B. INTERCAM",name:"Intercam Casa de Bolsa, S.A. de C.V."},631:{tag:"C.B. VANGUARDIA",name:"Vanguardia Casa de Bolsa, S.A. de C.V."},632:{tag:"BULLTICK C.B.",name:"Bulltick Casa de Bolsa, S.A. de C.V."},633:{tag:"STERLING",name:"Sterling Casa de Cambio, S.A. de C.V."},634:{tag:"FINCOMUN",name:"Fincom\xFAn, Servicios Financieros Comunitarios, S.A. de C.V."},636:{tag:"HDI SEGUROS",name:"HDI Seguros, S.A. de C.V."},637:{tag:"ORDER",name:"OrderExpress Casa de Cambio , S.A. de C.V. AAC"},638:{tag:"AKALA",name:"Akala, S.A. de C.V., Sociedad Financiera Popular"},640:{tag:"JP MORGAN C.B.",name:"J.P. Morgan Casa de Bolsa, S.A. de C.V."},642:{tag:"REFORMA",name:"Operadora de Recursos Reforma, S.A. de C.V."},646:{tag:"STP",name:"Sistema de Transferencias y Pagos STP, S.A. de C.V., SOFOM E.N.R."},647:{tag:"TELECOMM",name:"Telecomunicaciones de M\xE9xico"},648:{tag:"EVERCORE",name:"Evercore Casa de Bolsa, S.A. de C.V."},649:{tag:"SKANDIA",name:"Skandia Operadora S.A. de C.V."},651:{tag:"SEGMTY",name:"Seguros Monterrey New York Life, S.A de C.V."},652:{tag:"ASEA",name:"Soluci\xF3n Asea, S.A. de C.V., Sociedad Financiera Popular"},653:{tag:"KUSPIT",name:"Kuspit Casa de Bolsa, S.A. de C.V."},655:{tag:"SOFIEXPRESS",name:"J.P. SOFIEXPRESS, S.A. de C.V., S.F.P."},656:{tag:"UNAGRA",name:"UNAGRA, S.A. de C.V., S.F.P."},659:{tag:"OPCIONES EMPRESARIALES DEL NOROESTE",name:"Opciones Empresariales Del Noreste, S.A. DE C.V."},670:{tag:"LIBERTAD",name:"Libertad Servicios Financieros, S.A. De C.V."},846:{tag:"STP",name:"Sistema de Transferencias y Pagos STP"},901:{tag:"CLS",name:"CLS Bank International"},902:{tag:"INDEVAL",name:"SD. INDEVAL, S.A. de C.V."},999:{tag:"N/A",name:"N/A"}},cities:[[10,"Aguascalientes"],[12,"Calvillo"],[14,"Jes\xFAs Mar\xEDa"],[20,"Mexicali"],[22,"Ensenada"],[27,"Tecate"],[27,"Tijuana"],[28,"La Mesa"],[28,"Rosarito"],[28,"Tijuana [alternate]"],[40,"La Paz"],[41,"Cabo San Lucas"],[42,"Ciudad Constituci\xF3n"],[43,"Guerrero Negro"],[45,"San Jos\xE9 del Cabo"],[46,"Santa Rosal\xEDa"],[50,"Campeche"],[51,"Calkin\xED"],[52,"Ciudad del Carmen"],[53,"Champot\xF3n"],[60,"G\xF3mez Palacio"],[60,"Torre\xF3n"],[62,"Ciudad Acu\xF1a"],[68,"Monclova"],[71,"Nava"],[72,"Nueva Rosita"],[74,"Parras de la Fuente"],[75,"Piedras Negras"],[76,"Ramos Arizpe"],[77,"Sabinas"],[78,"Saltillo"],[80,"San Pedro de las Colonias"],[90,"Colima"],[95,"Manzanillo"],[97,"Tecom\xE1n"],[100,"Ter\xE1n"],[100,"Tuxtla Guti\xE9rrez"],[103,"Arriaga"],[107,"Cintalapa"],[109,"Comit\xE1n"],[109,"Villa Las Rosas"],[111,"Chiapa de Corso"],[113,"F. Comalapa"],[114,"Huixtla"],[123,"Ocosingo"],[124,"Ocozocuautla"],[125,"Palenque"],[126,"Pichucalco"],[127,"Pijijiapan"],[128,"Reforma"],[130,"San Crist\xF3bal de las Casas"],[131,"Simojovel"],[133,"Tapachula"],[135,"Tonala"],[137,"Venustiano Carranza"],[138,"Villa Flores"],[140,"Yajal\xF3n"],[150,"Chihuahua"],[150,"Ciudad Delicias"],[152,"Ciudad An\xE1huac"],[155,"Ciudad Camargo"],[158,"Ciudad Cuauht\xE9moc"],[161,"Ciudad Guerrero"],[162,"Parral"],[163,"Ciudad Jim\xE9nez"],[164,"Ciudad Ju\xE1rez"],[165,"Ciudad Madera"],[167,"El Molino de Namiquipa"],[168,"Nuevo Casas Grandes"],[180,"Atizapan"],[180,"Chalco"],[180,"Ciudad de M\xE9xico"],[180,"Coacalco"],[180,"Cuautitl\xE1n Izcalli"],[180,"Cuautitl\xE1n"],[180,"Ecatepec"],[180,"Huehuetoca"],[180,"Huixquilucan"],[180,"Ixtapaluca"],[180,"Los Reyes La Paz"],[180,"Naucalpan"],[180,"Nezahualc\xF3yotl"],[180,"Tecamac"],[180,"Teotihuac\xE1n"],[180,"Texcoco"],[180,"Tlalnepantla"],[190,"Durango"],[198,"N/A"],[201,"Tepehuanes"],[202,"Vicente Guerrero"],[210,"Guanajuato"],[211,"Abasolo"],[212,"Ac\xE1mbaro"],[213,"Apaseo el Alto"],[214,"Apaseo el Grande"],[215,"Celaya"],[216,"Comonfort"],[217,"Coroneo"],[218,"Cortazar"],[219,"Cuer\xE1maro"],[220,"Dolores Hidalgo"],[222,"Irapuato"],[223,"Jaral del Progreso"],[224,"Jer\xE9cuaro"],[225,"Le\xF3n"],[226,"Cd. Manuel Doblado"],[227,"Morole\xF3n"],[229,"P\xE9njamo"],[232,"Romita"],[233,"Salamanca"],[234,"Salvatierra"],[236,"San Felipe"],[237,"Pur\xEDsima de Bustos"],[237,"San Francisco del Rinco\xF3n"],[238,"San Jos\xE9 Iturbide"],[239,"San Luis de la Paz"],[240,"San Miguel Allende"],[244,"Silao"],[247,"Uriangato"],[248,"Valle de Santiago"],[249,"Yuriria"],[260,"Chilpancingo"],[261,"Acapulco"],[263,"Arcelia"],[264,"Atoyac de \xC1lvarez"],[266,"Ciudad Altamirano"],[267,"Coyuca de Ben\xEDtez"],[270,"Chilapa"],[271,"Huitzuco"],[272,"Iguala"],[272,"La Sabana"],[274,"Cuajinicuilapa"],[274,"Ometepec"],[275,"San Marcos"],[276,"Taxco"],[278,"Teloloapan"],[281,"Tlapa"],[282,"Ixtapa Zihuatanejo"],[282,"Zihuatanejo"],[290,"Pachuca"],[291,"Actopan"],[292,"Apam"],[293,"Atotonilco el Grande"],[294,"Ciudad Sahag\xFAn"],[294,"Teocaltiche"],[295,"Cuautepec"],[296,"Huejutla"],[297,"Huichapan"],[298,"Ixmiquilpan"],[303,"Progreso de Obreg\xF3n"],[305,"Tepeapulco"],[308,"Tizayuca"],[311,"Tula de Allende"],[312,"Tulancingo"],[313,"Zacualtip\xE1n"],[314,"Zimap\xE1n"],[320,"El Salto"],[320,"Guadalajara"],[320,"San Pedro Tlaquepaque"],[320,"Tlajomulco"],[320,"Tonala [alternate]"],[320,"Zapopan"],[326,"Ameca"],[327,"Arandas"],[330,"Atotonilco el Alto"],[331,"Atequiza"],[333,"Autl\xE1n"],[334,"Azteca"],[340,"Casimiro Castillo"],[341,"Cihuatl\xE1n"],[342,"Ciudad Guzm\xE1n"],[346,"Chapala"],[348,"El Grullo"],[355,"Ixtlahuac\xE1n del R\xEDo"],[356,"Jalostotitl\xE1n"],[357,"Jamay"],[361,"La Barca"],[362,"Lagos de Moreno"],[370,"Ocotl\xE1n"],[373,"Pihuamo"],[375,"Las Juntas"],[375,"Nuevo Vallarta"],[375,"Pitillal"],[375,"Puerto Vallarta"],[381,"San Juan de los Lagos"],[382,"N/A"],[384,"San Miguel el Alto"],[385,"San Patricio Melaque"],[386,"Sayula"],[387,"Tala"],[389,"Tamazula de Gordiano"],[391,"Tecalitl\xE1n"],[396,"Tepatitl\xE1n"],[397,"Tequila"],[403,"Tototl\xE1n"],[404,"T\xFAxpam"],[411,"Villa Hidalgo"],[413,"Zacoalco de Torres"],[414,"Zapotiltic"],[416,"Zapotlanejo"],[420,"Toluca"],[421,"Acambay"],[422,"Almoloya de Ju\xE1rez"],[424,"Amecameca"],[425,"Apaxco"],[426,"Atlacomulco"],[428,"Coatepec de Harinas"],[430,"Chicoloapan"],[431,"Chiconcuac"],[432,"El Oro"],[433,"Ixtapan de la Sal"],[434,"Ixtlahuaca"],[435,"Jilotepec"],[438,"Lerma"],[441,"Metepec"],[443,"Otumba"],[445,"San Mateo Atenco"],[446,"Tejupilco"],[448,"Temascaltepec"],[449,"Temoaya"],[450,"Tenancingo"],[451,"Tenago del Valle"],[453,"Santiago Tiangistenco"],[455,"Tultepec"],[456,"Tultitl\xE1n"],[457,"Valle de Bravo"],[460,"Villa Nicol\xE1s Romero"],[463,"Zumpango"],[470,"Morelia"],[472,"Aguililla"],[476,"Apatzing\xE1n"],[480,"Ciudad Hidalgo"],[483,"Cotija"],[484,"Cuitzeo"],[492,"Huetamo"],[493,"Jacona"],[494,"Jiquilpan"],[496,"La Piedad"],[497,"L\xE1zaro C\xE1rdenas"],[498,"Los Reyes"],[499,"Maravat\xEDo"],[501,"Nueva Italia"],[506,"P\xE1tzcuaro"],[508,"Pur\xE9pero"],[509,"Puruandiro"],[512,"Sahuayo"],[515,"Tac\xE1mbaro"],[517,"Tanganc\xEDcuaro"],[519,"Tepalcatepec"],[523,"Tlazazalca"],[528,"Uruapan"],[533,"Yur\xE9cuaro"],[534,"Zacapu"],[535,"Zamora"],[536,"Zinap\xE9cuaro"],[537,"Zit\xE1cuaro"],[540,"Cuernavaca"],[542,"Cuautla"],[542,"Oaxtepec, Morelos"],[543,"Jiutepec"],[544,"Jojutla"],[545,"Puente de Ixtla"],[546,"Temixco"],[548,"Tetecala"],[549,"Yautepec"],[552,"Zacatepec"],[560,"Tepic"],[561,"Acaponeta"],[562,"Ahuacatl\xE1n"],[564,"Compostela"],[566,"Ixtl\xE1n del R\xEDo"],[571,"San Blas"],[573,"Santiago Ixcuintla"],[575,"T\xFAxpam [alternate]"],[580,"Apodaca"],[580,"Cadereyta"],[580,"Cd. Guadalupe"],[580,"General Escobedo"],[580,"Monterrey"],[580,"San Nicol\xE1s de los Garza"],[580,"San Pedro Garza Garc\xEDa"],[580,"Santa Catarina"],[583,"Allende"],[592,"General Zuazua"],[595,"Linares"],[597,"Montemorelos"],[599,"Sabinas Hidalgo"],[600,"Salinas Victoria"],[601,"El Cercado"],[601,"Villa de Santiago"],[610,"Oaxaca"],[613,"Tlaxiaco"],[614,"Huajuapan de Le\xF3n"],[616,"Ixtepec"],[617,"Juchit\xE1n"],[619,"Loma Bonita"],[620,"Mat\xEDas Romero"],[621,"Miahuatl\xE1n"],[622,"Ocotl\xE1n [alternate]"],[624,"Puerto Escondido"],[626,"Salina Cruz"],[627,"Lagunas"],[628,"Tuxtepec"],[630,"Pochutla"],[631,"San Pedro Tapanatepec"],[632,"Santa Luc\xEDa del Camino"],[634,"Bah\xEDas de Huatulco"],[635,"Santiago Juxtlahuaca"],[636,"Pinotepa Nacional"],[637,"Tehuantepec"],[638,"Tlacolula"],[640,"Zimatl\xE1n"],[650,"Cholula"],[650,"La Resurrecci\xF3n"],[650,"Puebla"],[650,"San Baltazar Campeche"],[651,"N/A"],[652,"Acatzingo"],[654,"Atlixco"],[656,"Cuetzalan"],[659,"Huauchinango"],[662,"Iz\xFAcar de Matamoros"],[667,"San Mart\xEDn Texmelucan"],[668,"San Felipe Hueyotlipan"],[669,"Tecamachalco"],[670,"Tehuac\xE1n"],[671,"San Lorenzo"],[672,"Teziutl\xE1n"],[674,"Xicotepec de Ju\xE1rez"],[676,"Zacatl\xE1n"],[680,"Pedro Escobedo"],[680,"Quer\xE9taro"],[680,"Villa Corregidora"],[681,"Amealco"],[685,"San Juan del R\xEDo"],[686,"Tequisquiapan"],[690,"Chetumal"],[691,"Canc\xFAn"],[691,"Col. Puerto Ju\xE1rez"],[692,"Cozumel"],[693,"N/A"],[694,"Playa del Carmen"],[700,"San Luis Potos\xED"],[703,"Cerritos"],[705,"Ciudad Valles"],[709,"Matehuala"],[711,"R\xEDo Verde"],[716,"Tamu\xEDn"],[730,"Culiac\xE1n"],[735,"Concordia"],[736,"Cosala"],[737,"Choix"],[738,"El Fuerte"],[739,"Escuinapa"],[740,"Guam\xFAchil"],[741,"Guasave"],[743,"Los Mochis"],[743,"Topolobampo"],[744,"Mazatl\xE1n"],[745,"Mocorito"],[746,"Navolato"],[760,"Hermosillo"],[761,"Agua Prieta"],[765,"Caborca"],[766,"Cananea"],[767,"Ciudad Obreg\xF3n"],[767,"Esperanza"],[769,"Empalme"],[770,"Guaymas"],[770,"San Carlos"],[771,"Huatabampo"],[773,"Magdalena"],[776,"Nacozari de Garc\xEDa"],[777,"Navojoa"],[778,"Nogales"],[779,"Puerto Pe\xF1asco"],[780,"San Luis R\xEDo Colorado"],[790,"Tamulte"],[790,"Villa Hermosa"],[792,"C\xE1rdenas"],[793,"Ciudad Pemex"],[794,"Comalcalco"],[796,"Emiliano Zapata"],[797,"Frontera"],[798,"Huimanguillo"],[800,"Jalpa de M\xE9ndez"],[802,"Macuspana"],[803,"Nacajuca"],[804,"Para\xEDso"],[805,"Tacotalpa"],[806,"Teapa"],[807,"Tenosique"],[810,"Ciudad Victoria"],[811,"Altamira"],[813,"Ciudad Madero"],[813,"Tampico"],[814,"Ciudad Mante"],[818,"Matamoros"],[821,"Colombia"],[821,"Nuevo Laredo"],[822,"Reynosa"],[823,"R\xEDo Bravo"],[825,"Soto La Marina"],[826,"Valle Hermoso"],[830,"Tlaxcala"],[832,"Apizaco"],[834,"Santa Ana Chiautempan"],[840,"Jalapa"],[841,"Acayucan"],[843,"Agua Dulce"],[845,"\xC1lamo"],[846,"Altotonga"],[848,"Banderilla"],[849,"Boca del R\xEDo"],[852,"Ciudad Mendoza"],[853,"Coatepec"],[854,"Coatzacoalcos"],[855,"C\xF3rdoba"],[856,"Cosamaloapan"],[860,"Cuitl\xE1huac"],[863,"Fort\xEDn de las Flores"],[864,"Guti\xE9rrez Zamora"],[865,"Huatusco"],[867,"Isla"],[868,"Ixtaczoquitl\xE1n"],[869,"J\xE1ltipan"],[871,"Juan Rodr\xEDguez Clara"],[872,"Villa Jos\xE9 Cardel"],[873,"Las Choapas"],[875,"Naranjos"],[876,"Mart\xEDnez de la Torre"],[877,"Minatitl\xE1n"],[878,"Misantla"],[879,"Nanchital"],[882,"Orizaba"],[885,"Papantla"],[886,"Perote"],[888,"Poza Rica"],[889,"R\xEDo Blanco"],[890,"San Andr\xE9s Tuxtla"],[891,"San Rafael"],[894,"Plat\xF3n S\xE1nchez"],[894,"Tantoyuca"],[895,"Tempoal"],[898,"Tierra Blanca"],[901,"Tlapacoyan"],[903,"T\xFAxpam de Rodr\xEDguez Cano"],[905,"Cd. Industrial Framboyan"],[905,"Veracruz"],[910,"M\xE9rida"],[913,"Motul"],[914,"Oxkutzcab"],[915,"Progreso"],[917,"Ticul"],[918,"Tizim\xEDn"],[920,"Valladolid"],[930,"Zacatecas"],[933,"Fresnillo"],[934,"Guadalupe"],[935,"Jalpa"],[936,"Jerez de G. Salinas"],[938,"Juchipila"],[939,"Loreto"],[946,"Nochistl\xE1n"],[958,"Valpara\xEDso"],[960,"Calera de V. Rosales"]]};"object"===("undefined"==typeof module?"undefined":_typeof(module))&&(module.exports=clabe),"object"===("undefined"==typeof window?"undefined":_typeof(window))&&(window.clabe=clabe);

@@ -1,4 +0,3 @@

// CLABE Validator
// github.com/center-key/clabe-validator
// MIT License
// CLABE Validator ~ MIT License
// Gulp configuration and tasks

@@ -19,5 +18,5 @@ // Imports

const home = pkg.homepage.replace('https://', '');
const license = pkg.license + ' License';
const banner = '//! CLABE Validator v' + [pkg.version, home, license].join(' ~ ') + '\n';
const banner = '//! CLABE Validator v' + pkg.version + ' ~ ' + home + ' ~ MIT License\n';
const htmlHintConfig = { 'attr-value-double-quotes': false };
const headerComments = /^[/][/].*\n/gm;
const transpileES6 = ['@babel/env', { modules: false }];

@@ -33,16 +32,12 @@ const babelMinifyJs = { presets: [transpileES6, 'minify'], comments: false };

.pipe(htmlValidator())
.pipe(htmlValidator.reporter());
.pipe(htmlValidator.reporter())
.pipe(size({ showFiles: true }));
},
setVersion: () => {
const headerCommentsLines = /^[/][/].*\n/gm;
buildDistribution: () => {
return gulp.src('clabe.js')
.pipe(replace(headerComments, ''))
.pipe(header(banner))
.pipe(replace('[VERSION]', pkg.version))
.pipe(replace(headerCommentsLines, ''))
.pipe(header(banner))
.pipe(size({ showFiles: true }))
.pipe(gulp.dest('dist'));
},
minify: () => {
return gulp.src('clabe.js')
.pipe(replace('[VERSION]', pkg.version))
.pipe(gulp.dest('dist'))
.pipe(babel(babelMinifyJs))

@@ -58,4 +53,3 @@ .pipe(rename({ extname: '.min.js' }))

// Gulp
gulp.task('lint-html', task.analyzeHtml);
gulp.task('version', task.setVersion);
gulp.task('minify', task.minify);
gulp.task('lint-html', task.analyzeHtml);
gulp.task('build-dist', task.buildDistribution);
{
"name": "clabe-validator",
"version": "1.3.1",
"version": "1.3.2",
"description": "JavaScript library to analyze or create a CLABE number for a Mexican bank account",
"license": "MIT",
"main": "clabe.js",
"browser": "dist/clabe.min.js",
"repository": "github:center-key/clabe-validator",

@@ -29,8 +30,8 @@ "homepage": "https://github.com/center-key/clabe-validator",

"browser": true,
"node": true,
"mocha": true
"mocha": true,
"node": true
},
"scripts": {
"pretest": "jshint *.js && gulp lint-html && gulp version && gulp minify",
"test": "mocha spec.js"
"pretest": "jshint *.js && gulp lint-html && gulp build-dist",
"test": "mocha spec.js && env specMode=minified mocha spec.js"
},

@@ -41,10 +42,10 @@ "engines": {

"devDependencies": {
"@babel/core": "~7.1",
"@babel/preset-env": "~7.1",
"@babel/core": "~7.2",
"@babel/preset-env": "~7.2",
"@fortawesome/fontawesome-free": "~5.5",
"dna.js": "~1.5",
"gulp": "~4.0",
"gulp-append-prepend": "~1.0",
"gulp-babel": "~8.0",
"gulp-babel-minify": "~0.5",
"@fortawesome/fontawesome-free": "~5.5",
"dna.js": "~1.4",
"gulp": "~4.0",
"gulp-header": "~2.0",

@@ -51,0 +52,0 @@ "gulp-htmlhint": "~2.2",

@@ -50,3 +50,3 @@ # CLABE Validator

console.log(clabeCheck.ok ? '¡Que bueno!' : '¡Muy mal!');
console.log('Your bank is ' + clabeCheck.bank);
console.log('Your bank: ' + clabeCheck.bank);
```

@@ -57,8 +57,9 @@

{
ok: true,
error: null,
tag: 'BANAMEX',
bank: 'Banco Nacional de México, S.A.',
city: 'Aguascalientes',
account: '07777777777'
ok: true,
error: null,
formatOk: true,
tag: 'BANAMEX',
bank: 'Banco Nacional de México, S.A.',
city: 'Aguascalientes',
account: '07777777777'
}

@@ -70,16 +71,19 @@ ```

{
ok: false,
error: 'invalid-city'
message: 'Invalid city code: 000'
ok: false,
formatOk: true
error: 'invalid-city'
message: 'Invalid city code: 000'
}
```
The `formatOk` field indicates if the CLABE's length and checksum are both valid (even if the bank
code or city code are invalid).
#### 4. Possible errors
| Error code | Error message |
| -------------------- | ----------------------------------------------- |
| `invalid-length` | Must be exactly 18 digits long |
| `invalid-characters` | Must be only numeric digits (no letters) |
| `invalid-checksum` | Invalid checksum, last digit should be: [DIGIT] |
| `invalid-bank` | Invalid bank code: [CODE] |
| `invalid-city` | Invalid city code: [CODE] |
| Error code | Error message | Format Ok |
| -------------------- | ----------------------------------------------- | ----------|
| `invalid-length` | Must be exactly 18 digits long | `false` |
| `invalid-characters` | Must be only numeric digits (no letters) | `false` |
| `invalid-checksum` | Invalid checksum, last digit should be: [DIGIT] | `false` |
| `invalid-bank` | Invalid bank code: [CODE] | `true` |
| `invalid-city` | Invalid city code: [CODE] | `true` |

@@ -93,3 +97,3 @@ ### D) Calculator usage

const clabeNum = clabe.calculate(2, 10, 7777777777);
console.log(clabeNum === '002010077777777771') //true;
console.log(clabeNum === '002010077777777771'); //true
```

@@ -96,0 +100,0 @@

@@ -10,5 +10,23 @@ // CLABE Validator

const assert = require('assert').strict;
const clabe = require('./clabe.js');
// Setup
const clabePath = process.env.specMode === 'minified' ? './dist/clabe.min.js' : './dist/clabe.js';
const clabe = require(clabePath);
// Specification suite
describe(require('path').basename(__filename) + ': ' + clabePath, () => {
////////////////////////////////////////////////////////////////////////////////////////////////////
describe('Library version number', () => {
it('follows semantic version formatting', () => {
const semVerPattern = /\d+[.]\d+[.]\d+/;
const actual = { version: clabe.version, valid: semVerPattern.test(clabe.version) };
const expected = { version: clabe.version, valid: true };
assert.deepEqual(actual, expected);
});
});
////////////////////////////////////////////////////////////////////////////////////////////////////
describe('List of CLABE banks', () => {

@@ -19,3 +37,3 @@

it('contains only uppercase bank tags', () => {
function checkTagCase(bankCode) { //example: 21: { tag: 'HSBC', name: 'HSBC México, S.A.' },
const checkTagCase = (bankCode) => { //example: 21: { tag: 'HSBC', name: 'HSBC México, S.A.' },
const bank = clabe.banksMap[bankCode];

@@ -25,3 +43,3 @@ const actual = { code: bankCode, tag: bank.tag, name: bank.name };

assert.deepEqual(actual, expected);
}
};
bankCodes.forEach(checkTagCase);

@@ -49,7 +67,7 @@ });

];
function evalData(data) {
const evalData = (data) => {
const actual = { code: data.input, tag: clabe.banksMap[parseInt(data.input)].tag };
const expected = { code: data.input, tag: data.expected };
assert.deepEqual(actual, expected);
}
};
dataSet.forEach(evalData);

@@ -64,7 +82,7 @@ });

];
function evalData(data) {
const evalData = (data) => {
const actual = { code: data.input, name: clabe.banksMap[parseInt(data.input)].name };
const expected = { code: data.input, name: data.expected };
assert.deepEqual(actual, expected);
}
};
dataSet.forEach(evalData);

@@ -84,7 +102,7 @@ });

const cityNamesMap = {}; //{ Aguascalientes: 10, Calvillo: 12, ... }
function addCity(city) { cityNamesMap[city[1]] = city[0]; }
const addCity = (city) => cityNamesMap[city[1]] = city[0];
clabe.cities.forEach(addCity);
it('is in numerical order', () => {
function checkOrder(city, i) { //example city: [10, 'Aguascalientes']
const checkOrder = (city, i) => { //example city: [10, 'Aguascalientes']
const priorCode = i > 0 ? clabe.cities[i - 1][0] : 0;

@@ -95,3 +113,3 @@ const ordered = city[0] >= priorCode;

assert.deepEqual(actual, expected);
}
};
clabe.cities.forEach(checkOrder);

@@ -107,7 +125,7 @@ });

];
function evalData(data) {
const evalData = (data) => {
const actual = { city: data.input, code: cityNamesMap[data.input] };
const expected = { city: data.input, code: parseInt(data.expected) };
assert.deepEqual(actual, expected);
}
};
dataSet.forEach(evalData);

@@ -117,3 +135,3 @@ });

it('has no duplicate city names', () => {
function checkForDuplicate(city) {
const checkForDuplicate = (city) => {
const code = cityNamesMap[city[1]];

@@ -124,3 +142,3 @@ const unique = city[0] === code || city[1] === 'N/A';

assert.deepEqual(actual, expected);
}
};
clabe.cities.forEach(checkForDuplicate);

@@ -136,14 +154,26 @@ });

const dataSet = [
{ input: '12345678901234567', expected: ['invalid-length', 'Must be exactly 18 digits long'] },
{ input: '00000000000000000a', expected: ['invalid-characters', 'Must be only numeric digits (no letters)'] },
{ input: '002010077777777779', expected: ['invalid-checksum', 'Invalid checksum, last digit should be: 1'] },
{ input: '000000000000000000', expected: ['invalid-bank', 'Invalid bank code: 000'] },
{ input: '002115016003269411', expected: ['invalid-city', 'Invalid city code: 115'] }
{ input: '12345678901234567', expected: [false, 'invalid-length', 'Must be exactly 18 digits long'] },
{ input: '00000000000000000a', expected: [false, 'invalid-characters', 'Must be only numeric digits (no letters)'] },
{ input: '002010077777777779', expected: [false, 'invalid-checksum', 'Invalid checksum, last digit should be: 1'] },
{ input: '000000000000000000', expected: [true, 'invalid-bank', 'Invalid bank code: 000'] },
{ input: '002115016003269411', expected: [true, 'invalid-city', 'Invalid city code: 115'] }
];
function evalData(data) {
const evalData = (data) => {
const result = clabe.validate(data.input);
const actual = { clabe: data.input, ok: result.ok, error: result.error, message: result.message };
const expected = { clabe: data.input, ok: false, error: data.expected[0], message: data.expected[1] };
const actual = {
clabe: data.input,
ok: result.ok,
format: result.formatOk,
error: result.error,
message: result.message
};
const expected = {
clabe: data.input,
ok: false,
format: data.expected[0],
error: data.expected[1],
message: data.expected[2]
};
assert.deepEqual(actual, expected);
}
};
dataSet.forEach(evalData);

@@ -159,11 +189,31 @@ });

];
function evalData(data) {
const evalData = (data) => {
const result = clabe.validate(data);
const actual = { clabe: data, ok: result.ok, error: result.error, msg: result.message };
const expected = { clabe: data, ok: true, error: null, msg: 'Valid'};
const actual = {
clabe: data,
ok: result.ok,
format: result.formatOk,
error: result.error,
msg: result.message
};
const expected = {
clabe: data,
ok: true,
format: true,
error: null,
msg: 'Valid'
};
assert.deepEqual(actual, expected);
}
};
dataSet.forEach(evalData);
});
it('accepts a valid CLABE number that has a checksum of 0', () => {
const data = '002010777777777770'; //case where the last compute checksum modulus rolls over
const result = clabe.validate(data);
const actual = { clabe: data, ok: result.ok, format: result.formatOk, error: result.error, msg: result.message };
const expected = { clabe: data, ok: true, format: true, error: null, msg: 'Valid'};
assert.deepEqual(actual, expected);
});
it('extracts the bank tag, bank name, and city', () => {

@@ -211,3 +261,3 @@ const clabeCheck = clabe.validate('002010077777777771');

];
function evalData(data) {
const evalData = (data) => {
const clabeNum = clabe.calculate(data.input.bank, data.input.city, data.input.acct);

@@ -217,3 +267,3 @@ const actual = { details: data.input, clabe: clabeNum };

assert.deepEqual(actual, expected);
}
};
dataSet.forEach(evalData);

@@ -223,1 +273,4 @@ });

});
////////////////////////////////////////////////////////////////////////////////////////////////////
});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc