UNPKG

validate-nif

Version:

A library to validate Portuguese fiscal number, NIF - Número de Identificação Fiscal.

29 lines (28 loc) 964 B
"use strict"; 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;