UNPKG

@hurbis/comum

Version:

Biblioteca contendo rotinas e utilitários para desenvolvimento em Angular.

113 lines • 10.2 kB
/** * @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