cnpj-alfa-validator
Version:
Um validador de CNPJ alfanumérico
53 lines (49 loc) • 2.16 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var CNPJ = /*#__PURE__*/function () {
function CNPJ() {}
CNPJ.isValid = function isValid(cnpj) {
if (!this.regexCaracteresNaoPermitidos.test(cnpj)) {
var cnpjSemMascara = this.removeMascaraCNPJ(cnpj);
if (this.regexCNPJ.test(cnpjSemMascara) && cnpjSemMascara !== CNPJ.cnpjZerado) {
var dvInformado = cnpjSemMascara.substring(this.tamanhoCNPJSemDV);
var dvCalculado = this.calculaDV(cnpjSemMascara.substring(0, this.tamanhoCNPJSemDV));
return dvInformado === dvCalculado;
}
}
return false;
};
CNPJ.calculaDV = function calculaDV(cnpj) {
if (!this.regexCaracteresNaoPermitidos.test(cnpj)) {
var cnpjSemMascara = this.removeMascaraCNPJ(cnpj);
if (this.regexCNPJSemDV.test(cnpjSemMascara) && cnpjSemMascara !== this.cnpjZerado.substring(0, this.tamanhoCNPJSemDV)) {
var somatorioDV1 = 0;
var somatorioDV2 = 0;
for (var i = 0; i < this.tamanhoCNPJSemDV; i++) {
var asciiDigito = cnpjSemMascara.charCodeAt(i) - this.valorBase;
somatorioDV1 += asciiDigito * this.pesosDV[i + 1];
somatorioDV2 += asciiDigito * this.pesosDV[i];
}
var dv1 = somatorioDV1 % 11 < 2 ? 0 : 11 - somatorioDV1 % 11;
somatorioDV2 += dv1 * this.pesosDV[this.tamanhoCNPJSemDV];
var dv2 = somatorioDV2 % 11 < 2 ? 0 : 11 - somatorioDV2 % 11;
return "" + dv1 + dv2;
}
}
throw new Error('Não é possível calcular o DV pois o CNPJ fornecido é inválido');
};
CNPJ.removeMascaraCNPJ = function removeMascaraCNPJ(cnpj) {
return cnpj.replace(this.regexCaracteresMascara, '');
};
return CNPJ;
}();
CNPJ.tamanhoCNPJSemDV = 12;
CNPJ.regexCNPJSemDV = /^([A-Z\d]){12}$/;
CNPJ.regexCNPJ = /^([A-Z\d]){12}(\d){2}$/;
CNPJ.regexCaracteresMascara = /[./-]/g;
CNPJ.regexCaracteresNaoPermitidos = /[^A-Z\d./-]/i;
CNPJ.valorBase = /*#__PURE__*/'0'.charCodeAt(0);
CNPJ.pesosDV = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
CNPJ.cnpjZerado = '00000000000000';
exports.CNPJ = CNPJ;
//# sourceMappingURL=cnpj-alfa-validator.cjs.development.js.map