UNPKG

@satheshsat/angular-cpf

Version:

CPF generator and validator

56 lines 7.43 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class CpfService { constructor() { } validate(cpf) { if (!cpf) return false; cpf = cpf.toString().replace(/\D+/g, ''); // Valida tamanho if (+cpf.length !== 11) return false; // check all char are same if ((/^(.)\1+$/.test(cpf))) return false; // Calcula e confere primeiro dígito verificador for (var i = 0, j = 10, soma = 0; i < 9; i++, j--) soma += cpf[i] * j; var resto = soma % 11; if (+cpf[9] !== +(resto < 2 ? 0 : 11 - resto)) return false; // Calcula e confere segundo dígito verificador for (i = 0, j = 11, soma = 0; i < 10; i++, j--) soma += cpf[i] * j; resto = soma % 11; return +cpf[10] === +(resto < 2 ? 0 : 11 - resto); } generate() { var cpf = Math.floor(100000000 + Math.random() * 900000000); var reverseCpf = cpf.toString().split('').reverse(); var d1 = 0, d2 = 0; for (var i = 0; i < reverseCpf.length; i++) { d1 += reverseCpf[i] * (2 + i); d2 += reverseCpf[i] * (3 + i); } d1 = 11 - (this.mod(d1, 11)); if (d1 >= 10) d1 = 0; d2 += d1 * 2; d2 = 11 - (this.mod(d2, 11)); if (d2 >= 10) d2 = 0; return '' + cpf + d1 + d2; } mod(dividendo, divisor) { return Math.round(dividendo - (Math.floor(dividendo / divisor) * divisor)); } } CpfService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CpfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); CpfService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CpfService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CpfService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcGYvc3JjL2xpYi9jcGYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sVUFBVTtJQUVyQixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRLENBQUMsR0FBUTtRQUNmLElBQUcsQ0FBQyxHQUFHO1lBQ0gsT0FBTyxLQUFLLENBQUM7UUFFakIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLDBCQUEwQjtRQUMxQixJQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixPQUFPLEtBQUssQ0FBQztRQUVqQixnREFBZ0Q7UUFDaEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLCtDQUErQztRQUMvQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksVUFBVSxHQUFRLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekQsSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxDQUFDLENBQUM7UUFDZCxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUNsQyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7UUFFRCxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBRSxFQUFFLEVBQUUsRUFBRSxDQUFFLENBQUUsQ0FBQztRQUNqQyxJQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ1QsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNYLEVBQUUsSUFBRSxFQUFFLEdBQUMsQ0FBQyxDQUFDO1FBRVQsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBRSxDQUFFLENBQUM7UUFDakMsSUFBSyxFQUFFLElBQUksRUFBRTtZQUNULEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxPQUFPLEVBQUUsR0FBQyxHQUFHLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsR0FBRyxDQUFFLFNBQWlCLEVBQUUsT0FBZTtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUUsU0FBUyxHQUFHLENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBRSxTQUFTLEdBQUcsT0FBTyxDQUFFLEdBQUcsT0FBTyxDQUFFLENBQUUsQ0FBQztJQUNyRixDQUFDOzt3R0FwRFUsVUFBVTs0R0FBVixVQUFVLGNBRlQsTUFBTTs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ3BmU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICB2YWxpZGF0ZShjcGY6IGFueSl7XG4gICAgaWYoIWNwZilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY3BmID0gY3BmLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxEKy9nLCAnJyk7XG5cbiAgICAvLyBWYWxpZGEgdGFtYW5ob1xuICAgIGlmICgrY3BmLmxlbmd0aCAhPT0gMTEpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBjaGVjayBhbGwgY2hhciBhcmUgc2FtZVxuICAgIGlmKCgvXiguKVxcMSskLy50ZXN0KGNwZikpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDYWxjdWxhIGUgY29uZmVyZSBwcmltZWlybyBkw61naXRvIHZlcmlmaWNhZG9yXG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSAxMCwgc29tYSA9IDA7IGkgPCA5OyBpKyssIGotLSlcbiAgICAgICAgc29tYSArPSBjcGZbaV0gKiBqO1xuICAgIHZhciByZXN0byA9IHNvbWEgJSAxMTtcbiAgICBpZiAoK2NwZls5XSAhPT0gKyhyZXN0byA8IDIgPyAwIDogMTEgLSByZXN0bykpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBDYWxjdWxhIGUgY29uZmVyZSBzZWd1bmRvIGTDrWdpdG8gdmVyaWZpY2Fkb3JcbiAgICBmb3IgKGkgPSAwLCBqID0gMTEsIHNvbWEgPSAwOyBpIDwgMTA7IGkrKywgai0tKVxuICAgICAgICBzb21hICs9IGNwZltpXSAqIGo7XG4gICAgcmVzdG8gPSBzb21hICUgMTE7XG4gICAgcmV0dXJuICtjcGZbMTBdID09PSArKHJlc3RvIDwgMiA/IDAgOiAxMSAtIHJlc3RvKTtcbiAgfVxuXG4gIGdlbmVyYXRlKCl7XG4gICAgICB2YXIgY3BmID0gTWF0aC5mbG9vcigxMDAwMDAwMDAgKyBNYXRoLnJhbmRvbSgpICogOTAwMDAwMDAwKTtcbiAgICAgIHZhciByZXZlcnNlQ3BmOiBhbnkgPSBjcGYudG9TdHJpbmcoKS5zcGxpdCgnJykucmV2ZXJzZSgpO1xuICAgICAgdmFyIGQxPTAsZDI9MDtcbiAgICAgIGZvcih2YXIgaT0wOyBpPHJldmVyc2VDcGYubGVuZ3RoOyBpKyspe1xuICAgICAgICAgIGQxICs9IHJldmVyc2VDcGZbaV0qKDIraSk7XG4gICAgICAgICAgZDIgKz0gcmV2ZXJzZUNwZltpXSooMytpKTtcbiAgICAgIH1cblxuICAgICAgZDEgPSAxMSAtICggdGhpcy5tb2QoIGQxLCAxMSApICk7XG4gICAgICBpZiAoIGQxID49IDEwICkgXG4gICAgICAgICAgZDEgPSAwO1xuICAgICAgZDIrPWQxKjI7XG5cbiAgICAgIGQyID0gMTEgLSAoIHRoaXMubW9kKCBkMiwgMTEgKSApO1xuICAgICAgaWYgKCBkMiA+PSAxMCApIFxuICAgICAgICAgIGQyID0gMDtcbiAgICAgIHJldHVybiAnJytjcGYrZDErZDI7XG4gIH1cblxuICBtb2QoIGRpdmlkZW5kbzogbnVtYmVyLCBkaXZpc29yOiBudW1iZXIgKSB7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZCggZGl2aWRlbmRvIC0gKCBNYXRoLmZsb29yKCBkaXZpZGVuZG8gLyBkaXZpc29yICkgKiBkaXZpc29yICkgKTtcbiAgfVxuXG59XG4iXX0=