@hurbis/comum
Version:
Biblioteca contendo rotinas e utilitários para desenvolvimento em Angular.
114 lines • 10.1 kB
JavaScript
/**
* @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=