UNPKG

1.07 kBJavaScriptView Raw
1import onlyNumbers from '@brazilian-utils/helper-only-numbers';
2import generateChecksum from '@brazilian-utils/helper-generate-checksum';
3
4var RESERVED_ENTRIES = ['00000000000', '11111111111', '22222222222', '33333333333', '44444444444', '55555555555', '66666666666', '77777777777', '88888888888', '99999999999'];
5var VERIFICATION_INDEXES = [9, 10];
6
7function isFormatValid(taxId) {
8 return /^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/.test(taxId);
9}
10
11function isReserved(taxId) {
12 return RESERVED_ENTRIES.indexOf(taxId) >= 0;
13}
14
15function isChecksumValid(taxId) {
16 return VERIFICATION_INDEXES.every(function (index) {
17 var mod = generateChecksum(taxId.slice(0, index).split('').reduce(function (a, b) {
18 return a + b;
19 }, ''), index + 1) % 11;
20 return taxId[index] === String(mod < 2 ? 0 : 11 - mod);
21 });
22}
23
24function isValidCpf(cpf) {
25 if (!cpf) return false;
26 var numericCPF = onlyNumbers(cpf);
27 return isFormatValid(cpf) && !isReserved(numericCPF) && isChecksumValid(numericCPF);
28}
29
30export default isValidCpf;
31//# sourceMappingURL=is-valid-cpf.esm.js.map