validate-nif
Version:
A library to validate Portuguese fiscal number, NIF - Número de Identificação Fiscal.
29 lines (28 loc) • 964 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateNIF = void 0;
function isLengthValid(nif) {
return nif.length === 9;
}
var FIRST_DIGIT = ["1", '2', '3', '5', '6', '8'];
var FIRST_TWO_DIGITS = ['45', '70', '71', '72', '74', '75', '77', '79', '90', '91', '98', '99'];
function getTotal(nif) {
return (Number(nif[0]) * 9 +
Number(nif[1]) * 8 +
Number(nif[2]) * 7 +
Number(nif[3]) * 6 +
Number(nif[4]) * 5 +
Number(nif[5]) * 4 +
Number(nif[6]) * 3 +
Number(nif[7]) * 2);
}
function validateNIF(nif) {
if (!isLengthValid(nif))
return false;
if (!FIRST_DIGIT.includes(nif.substring(0, 1)) && !FIRST_TWO_DIGITS.includes(nif.substring(0, 2)))
return false;
var remainder11 = getTotal(nif) % 11;
var checkDigit = remainder11 < 2 ? 0 : 11 - remainder11;
return checkDigit === Number(nif[8]);
}
exports.validateNIF = validateNIF;