UNPKG

node-simple-validator

Version:
41 lines (27 loc) 1.28 kB
/** * @param {*} cpf a valid cpf * * @returns boolean * * @example * const { isCpf } = require("node-simple-validator") * isCpf("333.871.970-12") // true * isCpf("33387197012") // true * // Valid CPF generated by https://www.4devs.com.br/gerador_de_cpf */ export default (cpf: string): boolean => { if (!Boolean(cpf)) return false const cpfNumbers = cpf.replace(/\D/g, "") if (cpfNumbers.length < 11) return false const nineFirstNumbers = cpfNumbers.substr(0, 9).split("") if (!Array.from(cpfNumbers).filter(e => e !== cpfNumbers[0]).length) return false const mult = 10 let sumFirstNumber = 11 - (nineFirstNumbers.map((number: any, index: any) => number * (mult - index)).reduce((acc, curr) => acc + curr) % 11) sumFirstNumber > 9 ? (sumFirstNumber = 0) : (sumFirstNumber = sumFirstNumber) const cpfFirstNumber = `${nineFirstNumbers.join("")}${sumFirstNumber}`.split("") let sumSecondNumber = 11 - (cpfFirstNumber.map((number: any, index: any) => number * (mult + 1 - index)).reduce((acc, curr) => (acc += curr)) % 11) sumSecondNumber > 9 ? (sumSecondNumber = 0) : (sumSecondNumber = sumSecondNumber) const cpfComplete = `${cpfFirstNumber.join("")}${sumSecondNumber}` if (cpfComplete !== cpfNumbers) return false return true }