UNPKG

@hurbis/comum

Version:

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

114 lines • 10.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ export class CPF { /** * @param {?} numeros * @return {?} */ static retornarDigito(numeros) { /** @type {?} */ let listaNumero = numeros .split("") .map((numero) => { return parseInt(numero, 10); }); /** @type {?} */ var modulo = listaNumero.length + 1; /** @type {?} */ var multiplificador = listaNumero.map((numero, indice) => { return numero * (modulo - indice); }); /** @type {?} */ var resto = multiplificador.reduce((buffer, numero) => { return buffer + numero; }) % 11; return (resto < 2 ? 0 : 11 - resto); } /** * @param {?} numero * @return {?} */ static formatar(numero) { /** @type {?} */ let regex = new RegExp("^(\\d{3})(\\d{3})(\\d{3})(\\d{2})$"); return this.limpar(numero).replace(regex, "$1.$2.$3-$4"); } /** * @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); // 10 numeroSemDV += this.retornarDigito(numeroSemDV); // 11 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 !== 11) { return false; } if (this.LISTA_IGNORADA.indexOf(numeroLimpo) >= 0) { return false; } /** @type {?} */ let numeroComDV = this.atualizarComDV(numeroLimpo.substr(0, 9)); return numeroComDV.substr(-2) === numeroLimpo.substr(-2); } /** * @param {?} formatado * @return {?} */ static gerar(formatado) { /** @type {?} */ let numeroSemDV = ""; for (let i = 0; i < 9; i++) { numeroSemDV += Math.floor(Math.random() * 9); } /** @type {?} */ let numeroComDV = this.atualizarComDV(numeroSemDV); return (formatado ? this.formatar(numeroComDV) : numeroComDV); } } CPF.LISTA_IGNORADA = [ "00000000000", "11111111111", "22222222222", "33333333333", "44444444444", "55555555555", "66666666666", "77777777777", "88888888888", "99999999999", "12345678909" ]; CPF.STRICT_STRIP_REGEX = new RegExp("[.-]/g"); CPF.LOOSE_STRIP_REGEX = new RegExp("[^\d]/g"); if (false) { /** @type {?} */ CPF.LISTA_IGNORADA; /** @type {?} */ CPF.STRICT_STRIP_REGEX; /** @type {?} */ CPF.LOOSE_STRIP_REGEX; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGh1cmJpcy9jb211bS8iLCJzb3VyY2VzIjpbImxpYi91dGlsL3ZhbGlkYWRvci9jcGYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE1BQU0sT0FBTyxHQUFHOzs7OztJQWtCTixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQWU7O1lBQ3ZDLFdBQVcsR0FBYSxPQUFPO2FBQ2hDLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7WUFFeEQsTUFBTSxHQUFXLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQzs7WUFFdkMsZUFBZSxHQUFhLFdBQVcsQ0FBQyxHQUFHLENBQzdDLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxFQUFFO1lBQ2pDLE9BQU8sTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQzs7WUFFQSxLQUFLLEdBQVcsZUFBZSxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLEVBQUU7WUFDakMsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxHQUFHLEVBQUU7UUFFVCxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQWM7O1lBQ3hCLEtBQUssR0FBVyxJQUFJLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7Ozs7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWMsRUFBRSxNQUFnQjs7WUFDeEMsS0FBSyxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1FBQzdFLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7OztJQUVPLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBbUI7UUFDL0MsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQ3RELFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUN0RCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOzs7Ozs7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWMsRUFBRSxNQUFnQjs7WUFDekMsV0FBVyxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztRQUVyRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUVuQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUVoRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1NBQUU7O1lBRWhFLFdBQVcsR0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXZFLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBa0I7O1lBQ3pCLFdBQVcsR0FBVyxFQUFFO1FBRTVCLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlDOztZQUVHLFdBQVcsR0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUUxRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDOztBQTdFYyxrQkFBYyxHQUFhO0lBQ3hDLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0NBQ2QsQ0FBQztBQUVhLHNCQUFrQixHQUFXLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELHFCQUFpQixHQUFXLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7SUFmakUsbUJBWUU7O0lBRUYsdUJBQWlFOztJQUNqRSxzQkFBaUUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ1BGIHtcclxuICBwcml2YXRlIHN0YXRpYyBMSVNUQV9JR05PUkFEQTogc3RyaW5nW10gPSBbXHJcbiAgICBcIjAwMDAwMDAwMDAwXCIsXHJcbiAgICBcIjExMTExMTExMTExXCIsXHJcbiAgICBcIjIyMjIyMjIyMjIyXCIsXHJcbiAgICBcIjMzMzMzMzMzMzMzXCIsXHJcbiAgICBcIjQ0NDQ0NDQ0NDQ0XCIsXHJcbiAgICBcIjU1NTU1NTU1NTU1XCIsXHJcbiAgICBcIjY2NjY2NjY2NjY2XCIsXHJcbiAgICBcIjc3Nzc3Nzc3Nzc3XCIsXHJcbiAgICBcIjg4ODg4ODg4ODg4XCIsXHJcbiAgICBcIjk5OTk5OTk5OTk5XCIsXHJcbiAgICBcIjEyMzQ1Njc4OTA5XCJcclxuICBdO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBTVFJJQ1RfU1RSSVBfUkVHRVg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoXCJbLi1dL2dcIik7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTE9PU0VfU1RSSVBfUkVHRVg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoXCJbXlxcZF0vZ1wiKTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmV0b3JuYXJEaWdpdG8obnVtZXJvczogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBsaXN0YU51bWVybzogbnVtYmVyW10gPSBudW1lcm9zXHJcbiAgICAgIC5zcGxpdChcIlwiKVxyXG4gICAgICAubWFwKChudW1lcm86IHN0cmluZykgPT4geyByZXR1cm4gcGFyc2VJbnQobnVtZXJvLCAxMCk7IH0pO1xyXG5cclxuICAgIHZhciBtb2R1bG86IG51bWJlciA9IGxpc3RhTnVtZXJvLmxlbmd0aCArIDE7XHJcblxyXG4gICAgdmFyIG11bHRpcGxpZmljYWRvcjogbnVtYmVyW10gPSBsaXN0YU51bWVyby5tYXAoXHJcbiAgICAgIChudW1lcm86IG51bWJlciwgaW5kaWNlOiBudW1iZXIpID0+IHtcclxuICAgICAgICByZXR1cm4gbnVtZXJvICogKG1vZHVsbyAtIGluZGljZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHZhciByZXN0bzogbnVtYmVyID0gbXVsdGlwbGlmaWNhZG9yLnJlZHVjZShcclxuICAgICAgKGJ1ZmZlcjogbnVtYmVyLCBudW1lcm86IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBidWZmZXIgKyBudW1lcm87XHJcbiAgICAgIH0pICUgMTE7XHJcblxyXG4gICAgcmV0dXJuIChyZXN0byA8IDIgPyAwIDogMTEgLSByZXN0byk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZm9ybWF0YXIobnVtZXJvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlZ2V4OiBSZWdFeHAgPSBuZXcgUmVnRXhwKFwiXihcXFxcZHszfSkoXFxcXGR7M30pKFxcXFxkezN9KShcXFxcZHsyfSkkXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMubGltcGFyKG51bWVybykucmVwbGFjZShyZWdleCwgXCIkMS4kMi4kMy0kNFwiKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBsaW1wYXIobnVtZXJvOiBzdHJpbmcsIHN0cmljdD86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlZ2V4OiBSZWdFeHAgPSBzdHJpY3QgPyB0aGlzLlNUUklDVF9TVFJJUF9SRUdFWCA6IHRoaXMuTE9PU0VfU1RSSVBfUkVHRVg7XHJcbiAgICByZXR1cm4gKG51bWVybyB8fCBcIlwiKS50b1N0cmluZygpLnJlcGxhY2UocmVnZXgsIFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXR1YWxpemFyQ29tRFYobnVtZXJvU2VtRFY6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBudW1lcm9TZW1EViArPSB0aGlzLnJldG9ybmFyRGlnaXRvKG51bWVyb1NlbURWKTsgLy8gMTBcclxuICAgIG51bWVyb1NlbURWICs9IHRoaXMucmV0b3JuYXJEaWdpdG8obnVtZXJvU2VtRFYpOyAvLyAxMVxyXG4gICAgcmV0dXJuIG51bWVyb1NlbURWO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHZhbGlkYXIobnVtZXJvOiBzdHJpbmcsIHN0cmljdD86IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCBudW1lcm9MaW1wbzogc3RyaW5nID0gdGhpcy5saW1wYXIobnVtZXJvLCBzdHJpY3QpO1xyXG5cclxuICAgIGlmICghbnVtZXJvTGltcG8pIHsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG4gICAgaWYgKG51bWVyb0xpbXBvLmxlbmd0aCAhPT0gMTEpIHsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG4gICAgaWYgKHRoaXMuTElTVEFfSUdOT1JBREEuaW5kZXhPZihudW1lcm9MaW1wbykgPj0gMCkgeyByZXR1cm4gZmFsc2U7IH1cclxuXHJcbiAgICBsZXQgbnVtZXJvQ29tRFY6IHN0cmluZyA9IHRoaXMuYXR1YWxpemFyQ29tRFYobnVtZXJvTGltcG8uc3Vic3RyKDAsIDkpKTtcclxuXHJcbiAgICByZXR1cm4gbnVtZXJvQ29tRFYuc3Vic3RyKC0yKSA9PT0gbnVtZXJvTGltcG8uc3Vic3RyKC0yKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXJhcihmb3JtYXRhZG86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgbGV0IG51bWVyb1NlbURWOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCA5OyBpKyspIHtcclxuICAgICAgbnVtZXJvU2VtRFYgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG51bWVyb0NvbURWOiBzdHJpbmcgPSB0aGlzLmF0dWFsaXphckNvbURWKG51bWVyb1NlbURWKTtcclxuXHJcbiAgICByZXR1cm4gKGZvcm1hdGFkbyA/IHRoaXMuZm9ybWF0YXIobnVtZXJvQ29tRFYpIDogbnVtZXJvQ29tRFYpO1xyXG4gIH1cclxufVxyXG4iXX0=