UNPKG

truly-ui

Version:

Web Components for Desktop Applications.

52 lines 8.83 kB
import { LOCALE_I18N } from '../../i18n/i18n.service'; export function CPFValidator() { return (control) => { let sum = 0; let leftover; if (cpfUnmasked(control) === null || cpfUnmasked(control) === '') { return null; } if (cpfUnmasked(control) != null && cpfUnmasked(control).length < 9) { return { cpf: LOCALE_I18N.Validators.invalidCPF }; } if (isAllCharacteresEquals(control)) { return { cpf: LOCALE_I18N.Validators.invalidCPF }; } for (let i = 1; i <= 9; i++) { sum = sum + Number(cpfUnmasked(control).substring(i - 1, i)) * (11 - i); } leftover = (sum * 10) % 11; if ((leftover === 10) || (leftover === 11)) { leftover = 0; } if (leftover !== Number(cpfUnmasked(control).substring(9, 10))) { return { cpf: LOCALE_I18N.Validators.invalidCPF }; } sum = 0; for (let i = 1; i <= 10; i++) { sum = sum + Number(cpfUnmasked(control).substring(i - 1, i)) * (12 - i); } leftover = (sum * 10) % 11; if ((leftover === 10) || (leftover === 11)) { leftover = 0; } if (leftover !== Number(cpfUnmasked(control).substring(10, 11))) { return { cpf: LOCALE_I18N.Validators.invalidCPF }; } return null; }; } export function cpfUnmasked(c) { return String(c.value).replace(/(\/|\.|-|_|\(|\)|:|\+)/gi, ''); } export function isAllCharacteresEquals(c) { let result = true; for (let i = 1; i <= 9; i++) { if (cpfUnmasked(c).substring(i - 1, i) !== cpfUnmasked(c)[0]) { result = false; break; } } return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BmLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydWx5LXVpL3NyYy9jb21wb25lbnRzL3ZhbGlkYXRvcnMvY3BmL2NwZi52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLENBQUUsT0FBd0IsRUFBRyxFQUFFO1FBRXBDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUksUUFBUSxDQUFDO1FBRWIsSUFBSyxXQUFXLENBQUUsT0FBTyxDQUFFLEtBQUssSUFBSSxJQUFJLFdBQVcsQ0FBRSxPQUFPLENBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUssV0FBVyxDQUFFLE9BQU8sQ0FBRSxJQUFJLElBQUksSUFBSSxXQUFXLENBQUUsT0FBTyxDQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRztZQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkQ7UUFFRCxJQUFLLHNCQUFzQixDQUFFLE9BQU8sQ0FBRSxFQUFHO1lBQ3ZDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuRDtRQUVELEtBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUc7WUFDN0IsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUUsV0FBVyxDQUFFLE9BQU8sQ0FBRSxDQUFDLFNBQVMsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBRSxDQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0U7UUFFRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUssQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLEVBQUc7WUFDNUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUNkO1FBRUQsSUFBSyxRQUFRLEtBQUssTUFBTSxDQUFFLFdBQVcsQ0FBRSxPQUFPLENBQUUsQ0FBQyxTQUFTLENBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFFLEVBQUc7WUFDdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25EO1FBQ0QsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNSLEtBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUc7WUFDOUIsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUUsV0FBVyxDQUFFLE9BQU8sQ0FBRSxDQUFDLFNBQVMsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBRSxDQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0U7UUFFRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUssQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLEVBQUc7WUFDNUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUNkO1FBRUQsSUFBSyxRQUFRLEtBQUssTUFBTSxDQUFFLFdBQVcsQ0FBRSxPQUFPLENBQUUsQ0FBQyxTQUFTLENBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBRSxDQUFFLEVBQUc7WUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBRSxDQUFDO0lBQzVCLE9BQU8sTUFBTSxDQUFFLENBQUMsQ0FBQyxLQUFLLENBQUUsQ0FBQyxPQUFPLENBQUUsMEJBQTBCLEVBQUUsRUFBRSxDQUFFLENBQUM7QUFDckUsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBRSxDQUFDO0lBQ3ZDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztJQUNsQixLQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFHO1FBQzdCLElBQUssV0FBVyxDQUFFLENBQUMsQ0FBRSxDQUFDLFNBQVMsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBRSxLQUFLLFdBQVcsQ0FBRSxDQUFDLENBQUUsQ0FBRSxDQUFDLENBQUUsRUFBRztZQUN0RSxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2YsTUFBTTtTQUNQO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBNSVQgTGljZW5zZVxuXG4gQ29weXJpZ2h0IChjKSAyMDE5IFRlbWFpbmZvIFNvZnR3YXJlXG5cbiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTE9DQUxFX0kxOE4gfSBmcm9tICcuLi8uLi9pMThuL2kxOG4uc2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBDUEZWYWxpZGF0b3IoICk6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuICggY29udHJvbDogQWJzdHJhY3RDb250cm9sICkgPT4ge1xuXG4gICAgbGV0IHN1bSA9IDA7XG4gICAgbGV0IGxlZnRvdmVyO1xuXG4gICAgaWYgKCBjcGZVbm1hc2tlZCggY29udHJvbCApID09PSBudWxsIHx8IGNwZlVubWFza2VkKCBjb250cm9sICkgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIGNwZlVubWFza2VkKCBjb250cm9sICkgIT0gbnVsbCAmJiBjcGZVbm1hc2tlZCggY29udHJvbCApLmxlbmd0aCA8IDkgKSB7XG4gICAgICByZXR1cm4geyBjcGY6IExPQ0FMRV9JMThOLlZhbGlkYXRvcnMuaW52YWxpZENQRiB9O1xuICAgIH1cblxuICAgIGlmICggaXNBbGxDaGFyYWN0ZXJlc0VxdWFscyggY29udHJvbCApICkge1xuICAgICAgcmV0dXJuIHsgY3BmOiBMT0NBTEVfSTE4Ti5WYWxpZGF0b3JzLmludmFsaWRDUEYgfTtcbiAgICB9XG5cbiAgICBmb3IgKCBsZXQgaSA9IDE7IGkgPD0gOTsgaSsrICkge1xuICAgICAgc3VtID0gc3VtICsgTnVtYmVyKCBjcGZVbm1hc2tlZCggY29udHJvbCApLnN1YnN0cmluZyggaSAtIDEsIGkgKSApICogKDExIC0gaSk7XG4gICAgfVxuXG4gICAgbGVmdG92ZXIgPSAoc3VtICogMTApICUgMTE7XG4gICAgaWYgKCAobGVmdG92ZXIgPT09IDEwKSB8fCAobGVmdG92ZXIgPT09IDExKSApIHtcbiAgICAgIGxlZnRvdmVyID0gMDtcbiAgICB9XG5cbiAgICBpZiAoIGxlZnRvdmVyICE9PSBOdW1iZXIoIGNwZlVubWFza2VkKCBjb250cm9sICkuc3Vic3RyaW5nKCA5LCAxMCApICkgKSB7XG4gICAgICByZXR1cm4geyBjcGY6IExPQ0FMRV9JMThOLlZhbGlkYXRvcnMuaW52YWxpZENQRiB9O1xuICAgIH1cbiAgICBzdW0gPSAwO1xuICAgIGZvciAoIGxldCBpID0gMTsgaSA8PSAxMDsgaSsrICkge1xuICAgICAgc3VtID0gc3VtICsgTnVtYmVyKCBjcGZVbm1hc2tlZCggY29udHJvbCApLnN1YnN0cmluZyggaSAtIDEsIGkgKSApICogKDEyIC0gaSk7XG4gICAgfVxuXG4gICAgbGVmdG92ZXIgPSAoc3VtICogMTApICUgMTE7XG4gICAgaWYgKCAobGVmdG92ZXIgPT09IDEwKSB8fCAobGVmdG92ZXIgPT09IDExKSApIHtcbiAgICAgIGxlZnRvdmVyID0gMDtcbiAgICB9XG5cbiAgICBpZiAoIGxlZnRvdmVyICE9PSBOdW1iZXIoIGNwZlVubWFza2VkKCBjb250cm9sICkuc3Vic3RyaW5nKCAxMCwgMTEgKSApICkge1xuICAgICAgcmV0dXJuIHsgY3BmOiBMT0NBTEVfSTE4Ti5WYWxpZGF0b3JzLmludmFsaWRDUEYgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNwZlVubWFza2VkKCBjICkge1xuICByZXR1cm4gU3RyaW5nKCBjLnZhbHVlICkucmVwbGFjZSggLyhcXC98XFwufC18X3xcXCh8XFwpfDp8XFwrKS9naSwgJycgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWxsQ2hhcmFjdGVyZXNFcXVhbHMoIGMgKSB7XG4gIGxldCByZXN1bHQgPSB0cnVlO1xuICBmb3IgKCBsZXQgaSA9IDE7IGkgPD0gOTsgaSsrICkge1xuICAgIGlmICggY3BmVW5tYXNrZWQoIGMgKS5zdWJzdHJpbmcoIGkgLSAxLCBpICkgIT09IGNwZlVubWFza2VkKCBjIClbIDAgXSApIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbiJdfQ==