UNPKG

validate-curp

Version:

A simple library to validate Mexican CURPs (Personal ID)

3 lines (2 loc) 2.19 kB
!function(A,O){"object"==typeof exports&&"undefined"!=typeof module?module.exports=O():"function"==typeof define&&define.amd?define(O):(A="undefined"!=typeof globalThis?globalThis:A||self).validateCurp=O()}(this,(function(){"use strict";var A={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,G:16,H:17,I:18,J:19,K:20,L:21,M:22,N:23,"Ñ":24,O:25,P:26,Q:27,R:28,S:29,T:30,U:31,V:32,W:33,X:34,Y:35,Z:36},O=function(O){var e=O.slice(0,-1),n=e.split("").reduce((function(O,e,n){return O+(A[e]||0)*(18-n)}),0)%10;return 0===n?"0":String(10-n)},e=["BACA","BAKA","BUEI","BUEY","CACA","CACO","CAGA","CAGO","CAKA","CAKO","COGE","COGI","COJA","COJE","COJI","COJO","COLA","CULO","FALO","FETO","GETA","GUEI","GUEY","JETA","JOTO","KACA","KACO","KAGA","KAGO","KAKA","KAKO","KOGE","KOGI","KOJA","KOJE","KOJI","KOJO","KOLA","KULO","LILO","LOCA","LOCO","LOKA","LOKO","MAME","MAMO","MEAR","MEAS","MEON","MIAR","MION","MOCO","MOKO","MULA","MULO","NACA","NACO","PEDA","PEDO","PENE","PIPI","PITO","POPO","PUTA","PUTO","QULO","RATA","ROBA","ROBE","ROBO","RUIN","SENO","TETA","VACA","VAGA","VAGO","VAKA","VUEI","VUEY","WUEI","WUEY"],n=["AS","BC","BS","CC","CL","CM","CS","CH","DF","DG","GT","GR","HG","JC","MC","MN","MS","NT","NL","OC","PL","QT","QR","SP","SL","SR","TC","TS","TL","VZ","YN","ZS","NE"],t=/^[A-Z][AEIOUX][A-Z]{2}[0-9]{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z\d]\d$/,r=function(A){var r=[],i=t.test(A),u=!i||function(A){var O=A.slice(4,10),e=O.slice(0,2),n=O.slice(2,4),t=O.slice(4,6),r=new Date("20".concat(e,"-").concat(n,"-").concat(t));return!Number.isNaN(r.getTime())}(A),C=!i||function(A){var O=(A||"").slice(11,13);return n.includes(O)}(A),c=!i||function(A){var e=A.slice(-1);return O(A)===e}(A);return i||r.push("INVALID_FORMAT"),u||r.push("INVALID_DATE"),C||r.push("INVALID_STATE"),c||r.push("INVALID_CHECK_DIGIT"),function(A){var O=(A||"").slice(0,4);return e.includes(O)}(A)&&r.push("FORBIDDEN_WORD"),r};return function(A){var O=function(A){return String(A).trim().toUpperCase().replace(/[^0-9A-Z]/g,"")}(A),e=r(O);return 0===e.length?function(A){return{isValid:!0,curp:A}}(O):function(A){return{isValid:!1,curp:null,errors:A}}(e)}})); //# sourceMappingURL=index.js.map