@hurbis/comum
Version:
Biblioteca contendo rotinas e utilitários para desenvolvimento em Angular.
113 lines • 10.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
export class CNPJ {
/**
* @param {?} numeros
* @return {?}
*/
static retornarDigito(numeros) {
/** @type {?} */
let invertido = numeros.split("").reduce((buffer, number) => {
return [parseInt(number, 10)].concat(buffer);
}, []);
/** @type {?} */
let indice = 2;
/** @type {?} */
let soma = invertido.reduce((buffer, numero) => {
buffer += numero * indice;
indice = (indice === 9 ? 2 : indice + 1);
return buffer;
}, 0);
/** @type {?} */
let mod = soma % 11;
return (mod < 2 ? 0 : 11 - mod);
}
/**
* @param {?} numero
* @return {?}
*/
static formatar(numero) {
/** @type {?} */
let regex = new RegExp("^(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})$");
return this.limpar(numero).replace(regex, "$1.$2.$3/$4-$5");
}
/**
* @param {?} numero
* @param {?=} strict
* @return {?}
*/
static limpar(numero, strict) {
/** @type {?} */
let regex = strict ? this.STRICT_STRIP_REGEX : this.LOOSE_STRIP_REGEX;
return (numero || "").toString().replace(regex, "");
}
/**
* @param {?} numeroSemDV
* @return {?}
*/
static atualizarComDV(numeroSemDV) {
numeroSemDV += this.retornarDigito(numeroSemDV); // 13
numeroSemDV += this.retornarDigito(numeroSemDV); // 14
return numeroSemDV;
}
/**
* @param {?} numero
* @param {?=} strict
* @return {?}
*/
static validar(numero, strict) {
/** @type {?} */
let numeroLimpo = this.limpar(numero, strict);
if (!numeroLimpo) {
return false;
}
if (numeroLimpo.length !== 14) {
return false;
}
if (this.LISTA_IGNORADA.indexOf(numeroLimpo) >= 0) {
return false;
}
/** @type {?} */
let numeroComDV = this.atualizarComDV(numeroLimpo.substr(0, 12));
return numeroComDV.substr(-2) === numeroLimpo.substr(-2);
}
/**
* @param {?} formatado
* @return {?}
*/
static gerar(formatado) {
/** @type {?} */
let numeroSemDV = "";
for (let i = 0; i < 12; i++) {
numeroSemDV += Math.floor(Math.random() * 9);
}
/** @type {?} */
let numeroComDV = this.atualizarComDV(numeroSemDV);
return (formatado ? this.formatar(numeroComDV) : numeroComDV);
}
}
CNPJ.LISTA_IGNORADA = [
"00000000000000",
"11111111111111",
"22222222222222",
"33333333333333",
"44444444444444",
"55555555555555",
"66666666666666",
"77777777777777",
"88888888888888",
"99999999999999"
];
CNPJ.STRICT_STRIP_REGEX = new RegExp("[-\/.]/g");
CNPJ.LOOSE_STRIP_REGEX = new RegExp("[^\\d]/g");
if (false) {
/** @type {?} */
CNPJ.LISTA_IGNORADA;
/** @type {?} */
CNPJ.STRICT_STRIP_REGEX;
/** @type {?} */
CNPJ.LOOSE_STRIP_REGEX;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY25wai5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BodXJiaXMvY29tdW0vIiwic291cmNlcyI6WyJsaWIvdXRpbC92YWxpZGFkb3IvY25wai50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxPQUFPLElBQUk7Ozs7O0lBaUJQLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBZTs7WUFDdkMsU0FBUyxHQUFhLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNoRCxDQUFDLE1BQWdCLEVBQUUsTUFBYyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7WUFFSixNQUFNLEdBQVcsQ0FBQzs7WUFDbEIsSUFBSSxHQUFXLFNBQVMsQ0FBQyxNQUFNLENBQ2pDLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsRUFBRSxDQUFDLENBQUM7O1lBRUgsR0FBRyxHQUFXLElBQUksR0FBRyxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBYzs7WUFDeEIsS0FBSyxHQUFXLElBQUksTUFBTSxDQUFDLDRDQUE0QyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQzs7Ozs7O0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsTUFBZ0I7O1lBQ3hDLEtBQUssR0FBVyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtRQUM3RSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQW1CO1FBQy9DLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUN0RCxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDdEQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7Ozs7O0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFjLEVBQUUsTUFBZ0I7O1lBQ3pDLFdBQVcsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFFckQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1NBQUU7UUFFbkMsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1NBQUU7UUFFaEQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztTQUFFOztZQUVoRSxXQUFXLEdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV4RSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQWtCOztZQUN6QixXQUFXLEdBQVcsRUFBRTtRQUU1QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM5Qzs7WUFFRyxXQUFXLEdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7UUFFMUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7QUExRWMsbUJBQWMsR0FBYTtJQUN4QyxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7Q0FDakIsQ0FBQztBQUVhLHVCQUFrQixHQUFXLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BELHNCQUFpQixHQUFXLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzs7SUFkbEUsb0JBV0U7O0lBRUYsd0JBQW1FOztJQUNuRSx1QkFBa0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ05QSiB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTElTVEFfSUdOT1JBREE6IHN0cmluZ1tdID0gW1xyXG4gICAgXCIwMDAwMDAwMDAwMDAwMFwiLFxyXG4gICAgXCIxMTExMTExMTExMTExMVwiLFxyXG4gICAgXCIyMjIyMjIyMjIyMjIyMlwiLFxyXG4gICAgXCIzMzMzMzMzMzMzMzMzM1wiLFxyXG4gICAgXCI0NDQ0NDQ0NDQ0NDQ0NFwiLFxyXG4gICAgXCI1NTU1NTU1NTU1NTU1NVwiLFxyXG4gICAgXCI2NjY2NjY2NjY2NjY2NlwiLFxyXG4gICAgXCI3Nzc3Nzc3Nzc3Nzc3N1wiLFxyXG4gICAgXCI4ODg4ODg4ODg4ODg4OFwiLFxyXG4gICAgXCI5OTk5OTk5OTk5OTk5OVwiXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgU1RSSUNUX1NUUklQX1JFR0VYOiBSZWdFeHAgPSBuZXcgUmVnRXhwKFwiWy1cXC8uXS9nXCIpO1xyXG4gIHByaXZhdGUgc3RhdGljIExPT1NFX1NUUklQX1JFR0VYOiBSZWdFeHAgPSBuZXcgUmVnRXhwKFwiW15cXFxcZF0vZ1wiKTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmV0b3JuYXJEaWdpdG8obnVtZXJvczogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBpbnZlcnRpZG86IG51bWJlcltdID0gbnVtZXJvcy5zcGxpdChcIlwiKS5yZWR1Y2U8bnVtYmVyW10+KFxyXG4gICAgICAoYnVmZmVyOiBudW1iZXJbXSwgbnVtYmVyOiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4gW3BhcnNlSW50KG51bWJlciwgMTApXS5jb25jYXQoYnVmZmVyKTtcclxuICAgICAgfSwgW10pO1xyXG5cclxuICAgIGxldCBpbmRpY2U6IG51bWJlciA9IDI7XHJcbiAgICBsZXQgc29tYTogbnVtYmVyID0gaW52ZXJ0aWRvLnJlZHVjZShcclxuICAgICAgKGJ1ZmZlcjogbnVtYmVyLCBudW1lcm86IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGJ1ZmZlciArPSBudW1lcm8gKiBpbmRpY2U7XHJcbiAgICAgICAgaW5kaWNlID0gKGluZGljZSA9PT0gOSA/IDIgOiBpbmRpY2UgKyAxKTtcclxuICAgICAgICByZXR1cm4gYnVmZmVyO1xyXG4gICAgICB9LCAwKTtcclxuXHJcbiAgICBsZXQgbW9kOiBudW1iZXIgPSBzb21hICUgMTE7XHJcbiAgICByZXR1cm4gKG1vZCA8IDIgPyAwIDogMTEgLSBtb2QpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvcm1hdGFyKG51bWVybzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cChcIl4oXFxcXGR7Mn0pKFxcXFxkezN9KShcXFxcZHszfSkoXFxcXGR7NH0pKFxcXFxkezJ9KSRcIik7XHJcbiAgICByZXR1cm4gdGhpcy5saW1wYXIobnVtZXJvKS5yZXBsYWNlKHJlZ2V4LCBcIiQxLiQyLiQzLyQ0LSQ1XCIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGxpbXBhcihudW1lcm86IHN0cmluZywgc3RyaWN0PzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVnZXg6IFJlZ0V4cCA9IHN0cmljdCA/IHRoaXMuU1RSSUNUX1NUUklQX1JFR0VYIDogdGhpcy5MT09TRV9TVFJJUF9SRUdFWDtcclxuICAgIHJldHVybiAobnVtZXJvIHx8IFwiXCIpLnRvU3RyaW5nKCkucmVwbGFjZShyZWdleCwgXCJcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBhdHVhbGl6YXJDb21EVihudW1lcm9TZW1EVjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIG51bWVyb1NlbURWICs9IHRoaXMucmV0b3JuYXJEaWdpdG8obnVtZXJvU2VtRFYpOyAvLyAxM1xyXG4gICAgbnVtZXJvU2VtRFYgKz0gdGhpcy5yZXRvcm5hckRpZ2l0byhudW1lcm9TZW1EVik7IC8vIDE0XHJcbiAgICByZXR1cm4gbnVtZXJvU2VtRFY7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdmFsaWRhcihudW1lcm86IHN0cmluZywgc3RyaWN0PzogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IG51bWVyb0xpbXBvOiBzdHJpbmcgPSB0aGlzLmxpbXBhcihudW1lcm8sIHN0cmljdCk7XHJcblxyXG4gICAgaWYgKCFudW1lcm9MaW1wbykgeyByZXR1cm4gZmFsc2U7IH1cclxuXHJcbiAgICBpZiAobnVtZXJvTGltcG8ubGVuZ3RoICE9PSAxNCkgeyByZXR1cm4gZmFsc2U7IH1cclxuXHJcbiAgICBpZiAodGhpcy5MSVNUQV9JR05PUkFEQS5pbmRleE9mKG51bWVyb0xpbXBvKSA+PSAwKSB7IHJldHVybiBmYWxzZTsgfVxyXG5cclxuICAgIGxldCBudW1lcm9Db21EVjogc3RyaW5nID0gdGhpcy5hdHVhbGl6YXJDb21EVihudW1lcm9MaW1wby5zdWJzdHIoMCwgMTIpKTtcclxuXHJcbiAgICByZXR1cm4gbnVtZXJvQ29tRFYuc3Vic3RyKC0yKSA9PT0gbnVtZXJvTGltcG8uc3Vic3RyKC0yKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXJhcihmb3JtYXRhZG86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgbGV0IG51bWVyb1NlbURWOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAxMjsgaSsrKSB7XHJcbiAgICAgIG51bWVyb1NlbURWICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDkpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBudW1lcm9Db21EVjogc3RyaW5nID0gdGhpcy5hdHVhbGl6YXJDb21EVihudW1lcm9TZW1EVik7XHJcblxyXG4gICAgcmV0dXJuIChmb3JtYXRhZG8gPyB0aGlzLmZvcm1hdGFyKG51bWVyb0NvbURWKSA6IG51bWVyb0NvbURWKTtcclxuICB9XHJcbn1cclxuIl19