validation-br 1.6.4 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cnh.d.ts +1 -1
  2. package/dist/cnh.js +1 -1
  3. package/dist/cnpj.d.ts +1 -1
  4. package/dist/cnpj.js +1 -1
  5. package/dist/esm/_exceptions/ValidationBRError.js +9 -0
  6. package/dist/esm/_exceptions/ValidationBRError.js.map +1 -0
  7. package/dist/esm/cnh.js +137 -0
  8. package/dist/esm/cnh.js.map +1 -0
  9. package/dist/esm/cnpj.js +181 -0
  10. package/dist/esm/cnpj.js.map +1 -0
  11. package/dist/esm/cpf.js +145 -0
  12. package/dist/esm/cpf.js.map +1 -0
  13. package/dist/esm/index.js +33 -0
  14. package/dist/esm/index.js.map +1 -0
  15. package/dist/esm/judicialProcess.js +187 -0
  16. package/dist/esm/judicialProcess.js.map +1 -0
  17. package/dist/esm/nup17.js +151 -0
  18. package/dist/esm/nup17.js.map +1 -0
  19. package/dist/esm/package.json +1 -0
  20. package/dist/esm/phone.js +123 -0
  21. package/dist/esm/phone.js.map +1 -0
  22. package/dist/esm/pisPasep.js +123 -0
  23. package/dist/esm/pisPasep.js.map +1 -0
  24. package/dist/esm/postalCode.js +132 -0
  25. package/dist/esm/postalCode.js.map +1 -0
  26. package/dist/esm/renavam.js +120 -0
  27. package/dist/esm/renavam.js.map +1 -0
  28. package/dist/esm/tituloEleitor.js +145 -0
  29. package/dist/esm/tituloEleitor.js.map +1 -0
  30. package/dist/esm/utils.js +176 -0
  31. package/dist/esm/utils.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +5 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/nup17.js +6 -2
  36. package/dist/nup17.js.map +1 -1
  37. package/dist/phone.d.ts +71 -0
  38. package/dist/phone.js +134 -0
  39. package/dist/phone.js.map +1 -0
  40. package/dist/pisPasep.d.ts +4 -5
  41. package/dist/pisPasep.js +4 -5
  42. package/dist/pisPasep.js.map +1 -1
  43. package/dist/postalCode.d.ts +1 -1
  44. package/dist/postalCode.js +1 -1
  45. package/dist/renavam.d.ts +3 -3
  46. package/dist/renavam.js +3 -3
  47. package/dist/utils.js +1 -1
  48. package/dist/utils.js.map +1 -1
  49. package/package.json +20 -2
  50. package/readme.md +32 -0
package/dist/cnh.d.ts CHANGED
@@ -28,7 +28,7 @@
28
28
  * - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o
29
29
  * resto for 10, o DV1 é 0.
30
30
  *
31
- * 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3
31
+ * 2.1) 294 / 11 tem resto igual a 8. 11-8 = 3
32
32
  * DV1 = 3
33
33
  *
34
34
  * 3) Cálculo do segundo DV
package/dist/cnh.js CHANGED
@@ -29,7 +29,7 @@
29
29
  * - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o
30
30
  * resto for 10, o DV1 é 0.
31
31
  *
32
- * 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3
32
+ * 2.1) 294 / 11 tem resto igual a 8. 11-8 = 3
33
33
  * DV1 = 3
34
34
  *
35
35
  * 3) Cálculo do segundo DV
package/dist/cnpj.d.ts CHANGED
@@ -54,7 +54,7 @@
54
54
  * = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102
55
55
  *
56
56
  * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
57
- * 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.
57
+ * 102 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
58
58
  * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
59
59
  *
60
60
  * 3) Cálculo do segundo DV.
package/dist/cnpj.js CHANGED
@@ -55,7 +55,7 @@
55
55
  * = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102
56
56
  *
57
57
  * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
58
- * 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.
58
+ * 102 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
59
59
  * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
60
60
  *
61
61
  * 3) Cálculo do segundo DV.
@@ -0,0 +1,9 @@
1
+ class ValidationBRError extends Error {
2
+ }
3
+ ValidationBRError.INVALID_DV = new ValidationBRError('Dígito verificador inválido');
4
+ ValidationBRError.INVALID_FORMAT = new ValidationBRError('Formato inválido');
5
+ ValidationBRError.EMPTY_VALUE = new ValidationBRError('Valor não preenchido');
6
+ ValidationBRError.MAX_LEN_EXCEDEED = new ValidationBRError('Número de caracteres excedido');
7
+ ValidationBRError.REPEATED_SEQUENCE = new ValidationBRError('Sequência de números repetidos não permitida');
8
+ export default ValidationBRError;
9
+ //# sourceMappingURL=ValidationBRError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationBRError.js","sourceRoot":"","sources":["../../src/_exceptions/ValidationBRError.ts"],"names":[],"mappings":"AAAA,MAAqB,iBAAkB,SAAQ,KAAK;;AAC3C,4BAAU,GAAG,IAAI,iBAAiB,CAAC,6BAA6B,CAAC,CAAA;AACjE,gCAAc,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;AAC1D,6BAAW,GAAG,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AAC3D,kCAAgB,GAAG,IAAI,iBAAiB,CAAC,+BAA+B,CAAC,CAAA;AACzE,mCAAiB,GAAG,IAAI,iBAAiB,CAAC,8CAA8C,CAAC,CAAA;eAL7E,iBAAiB"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * isCNH()
3
+ * Calcula se uma CNH é válida
4
+ *
5
+ * @doc
6
+ * CNH deve possuir 11 caracteres
7
+ *
8
+ * - Os caracteres 1 a 9 são números sequenciais.
9
+ *
10
+ *
11
+ * - Os caracteres 10 e 11 são dígitos verificadores.
12
+ *
13
+ * 1) Partes do número
14
+ * ____________________________ ______
15
+ * | Número | D V |
16
+ * | 5 8 3 1 6 7 9 4 5 3 4 |
17
+ * |____________________________|_____|
18
+ *
19
+ * 2) Cálculo do primeiro DV.
20
+ *
21
+ * - Soma-se o produto das algarismos 1 a 9 pelos números 2, 3, 4, 5, 6, 7, 8, 9, 10.
22
+ *
23
+ * 5 8 3 1 6 7 9 4 5
24
+ * x x x x x x x x x
25
+ * 2 3 4 5 6 7 8 9 10
26
+ * = 10 +24 +12 +5 +36 +49 +72 +36 +50 = 294
27
+ *
28
+ * - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o
29
+ * resto for 10, o DV1 é 0.
30
+ *
31
+ * 2.1) 294 / 11 tem resto igual a 8. 11-8 = 3
32
+ * DV1 = 3
33
+ *
34
+ * 3) Cálculo do segundo DV
35
+ *
36
+ * - Soma-se o produto das algarismos 1 a 9 juntamente com o 10 caractere
37
+ * que é o DV1, pelos números 3, 4, 5, 6, 7, 8, 9, 10, 11, 2. O DV1 será
38
+ * multiplicado por 2 e ficará no final.
39
+ *
40
+ * 5 8 3 1 6 7 9 4 5 3
41
+ * x x x x x x x x x x
42
+ * 3 4 5 6 7 8 9 10 11 2
43
+ * = 10 +24 +12 +5 +36 +49 +72 +36 +50 +6 = 348
44
+ *
45
+ * 3.1) 348 / 11 tem resto igual a 7. 11 - 7 = 4.
46
+ * DV2 = 4
47
+ *
48
+ * - O somatório encontrado é dividido por 11. O DV2 é 11 subtraído do resto da divisão. Se o
49
+ * resto for 10, o DV2 é 0.
50
+ *
51
+ * Fonte: https://www.devmedia.com.br/forum/validacao-de-cnh/372972
52
+ *
53
+ * @param {String} value Título eleitoral
54
+ * @returns {Boolean}
55
+ */
56
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
57
+ import { sumElementsByMultipliers, sumToDV, clearValue, applyMask, fakeNumber } from './utils.js';
58
+ /**
59
+ * Calcula o Dígito Verificador de um RENAVAM informado
60
+ *
61
+ * @returns String Número fake de um cnh válido
62
+ */
63
+ export const dv = (value) => {
64
+ const cnh = clearValue(value, 9, {
65
+ trimAtRight: true,
66
+ rejectEmpty: true,
67
+ });
68
+ const sum1 = sumElementsByMultipliers(cnh.substring(0, 9), [2, 3, 4, 5, 6, 7, 8, 9, 10]);
69
+ const dv1 = sumToDV(sum1);
70
+ const sum2 = sumElementsByMultipliers(cnh.substring(0, 9) + dv1, [3, 4, 5, 6, 7, 8, 9, 10, 11, 2]);
71
+ const dv2 = sumToDV(sum2);
72
+ return `${dv1}${dv2}`;
73
+ };
74
+ /**
75
+ * validateOrFail()
76
+ * Valida se um número é válido e
77
+ * retorna uma exceção se não estiver
78
+ *
79
+ * @param {String|Number} value Número a ser validado
80
+ * @returns {Boolean}
81
+ */
82
+ export const validateOrFail = (value) => {
83
+ const cnh = normalize(value);
84
+ if (dv(cnh) !== cnh.substring(9, 11)) {
85
+ throw ValidationBRError.INVALID_DV;
86
+ }
87
+ return true;
88
+ };
89
+ /**
90
+ * validate()
91
+ * Valida se um número é válido
92
+ *
93
+ * @param {String|Number} value Número a ser validado
94
+ * @returns {Boolean}
95
+ */
96
+ export const validate = (value) => {
97
+ try {
98
+ return validateOrFail(value);
99
+ }
100
+ catch (error) {
101
+ return false;
102
+ }
103
+ };
104
+ /**
105
+ * Aplica uma máscara a uma string
106
+ *
107
+ * @returns String string com a máscara aplicada
108
+ */
109
+ export const mask = (value) => applyMask(value, '000000000-00');
110
+ /**
111
+ * Cria um número fake
112
+ *
113
+ * @returns String Número fake porém válido
114
+ */
115
+ export const fake = (withMask = false) => {
116
+ const value = fakeNumber(9, true);
117
+ const cnh = `${value}${dv(value)}`;
118
+ if (withMask)
119
+ return mask(cnh);
120
+ return cnh;
121
+ };
122
+ /**
123
+ * Retorna String sem máscara
124
+ *
125
+ * @param {String|Number} value Valor a remover máscara
126
+ * @returns {String}
127
+ */
128
+ export const normalize = (value) => {
129
+ return clearValue(value, 11, {
130
+ fillZerosAtLeft: true,
131
+ rejectEmpty: true,
132
+ rejectHigherLength: true,
133
+ rejectEqualSequence: true,
134
+ });
135
+ };
136
+ export default validate;
137
+ //# sourceMappingURL=cnh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cnh.js","sourceRoot":"","sources":["../src/cnh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;QAC/B,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnG,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,iBAAiB,CAAC,UAAU,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAW,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAEnC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC1D,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE;QAC3B,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * isCNPJ()
3
+ * Calcula se um CNPJ é válido
4
+ *
5
+ * A partir da Nota Técnica conjunta COCAD/SUARA/RFB nº 49 de 14 de maio de 2024, CNPJ passa
6
+ * a poder ser criado com letras e números, ao invés de apenas números. Esta alteração entra
7
+ * em vigor em 2026.
8
+ *
9
+ *
10
+ * @doc
11
+ * - CNPJ deve possuir 14 dígitos no formato AA.AAA.AAA/AAAA-NN, onde A representa letras
12
+ * ou números e N representa números (Nota Técnica conjunta COCAD/SUARA/RFB nº 49 de 14 de maio de 2024)
13
+ *
14
+ * - Os caracteres 1 a 8 são a identificação da empresa definida pela Receita Federal. Podem ser letras ou números
15
+ *
16
+ * - Os caracteres 9 a 12 são a identificação das filiais da empresa. Podendo ser letras ou números
17
+ *
18
+ * - Os caracteres 13 e 14 são os dígitos verificadores
19
+ *
20
+ * 1) Partes do número
21
+ * _______________________________ _______________ _______
22
+ * | Número | Filiais | DV |
23
+ * | 1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - X Y |
24
+ * |_______________________________|_______________|_______|
25
+ *
26
+ *
27
+ * 2.1) Conversão dos números para tabela ASCII
28
+ * Converte os caracteres do CNPJ em valores numéricos, mesmo que alguns deles
29
+ * sejam numéricos. A conversão será baseada na tabela ASCII
30
+ *
31
+ * Tabela ASCII
32
+ * 0 = 48 1 = 49 2 = 50 3 = 51 4 = 52
33
+ * 5 = 53 6 = 54 7 = 55 8 = 56 9 = 57
34
+ * A = 65 B = 66 C = 67 D = 68 E = 69
35
+ * F = 70 G = 71 H = 72 I = 73 J = 74
36
+ * K = 75 L = 76 M = 77 N = 78 O = 79
37
+ * P = 80 Q = 81 R = 82 S = 83 T = 84
38
+ * U = 85 V = 86 W = 87 X = 88 Y = 89
39
+ * Z = 90
40
+ *
41
+ * Ao converter cada dígito do CNPJ para o seu equivalente na tabela ASCII, subtraia de 48
42
+ * para obter o número que será multiplicado.
43
+ * Como o "0" é 48 e deve-se subtrair de 48, não há mudanças nos números.
44
+ *
45
+ *
46
+ *
47
+ * 2) Cálculo do primeiro DV.
48
+ *
49
+ * - Soma-se o produto das algarismos 1 a 12 pelos números 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
50
+ *
51
+ * 1 1 2 2 2 3 3 3 0 0 0 1
52
+ * x x x x x x x x x x x x
53
+ * 5 4 3 2 9 8 7 6 5 4 3 2
54
+ * = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102
55
+ *
56
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
57
+ * 102 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
58
+ * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
59
+ *
60
+ * 3) Cálculo do segundo DV.
61
+ *
62
+ * - Soma-se o produto das algarismos 1 a 13 (incluindo o DV1 calculado) pelos
63
+ * números 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
64
+ *
65
+ * 1 1 2 2 2 3 3 3 0 0 0 1 8
66
+ * x x x x x x x x x x x x x
67
+ * 6 5 4 3 2 9 8 7 6 5 4 3 2
68
+ * = 6 +5 +8 +6 +4 +27 +24 +21 +0 +0 +0 +3 +16 = 120
69
+ *
70
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
71
+ * 120 / 11 tem resto 10. 11 - 10 = 1. DV2 é 1.
72
+ * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
73
+ *
74
+ * Fonte: http://www.macoratti.net/alg_cnpj.htm
75
+ *
76
+ * @param {String} value Título eleitoral
77
+ * @returns {Boolean}
78
+ */
79
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
80
+ import { sumToDV, clearValue, fakeNumber, applyMask } from './utils.js';
81
+ export function dv(value) {
82
+ const cnpj = clearValue(value, 12, {
83
+ trimAtRight: true,
84
+ rejectEmpty: true,
85
+ });
86
+ const dv1Factors = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
87
+ const dv1 = sumToDvWithAlpha(cnpj.substring(0, 12), dv1Factors);
88
+ const dv2Factors = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
89
+ const dv2 = sumToDvWithAlpha(cnpj.substring(0, 12) + dv1, dv2Factors);
90
+ return `${dv1}${dv2}`;
91
+ }
92
+ /**
93
+ * Aplica uma máscara ao número informado
94
+ *
95
+ * @param {String} value Número de Processo
96
+ * @returns {String} Valor com a máscara
97
+ */
98
+ export function mask(value) {
99
+ return applyMask(value, '00.000.000/0000-00');
100
+ }
101
+ export function fake(input = false) {
102
+ const options = typeof input === 'boolean'
103
+ ? { withMask: input, alphanumeric: true }
104
+ : { withMask: false, alphanumeric: true, ...input };
105
+ const first = fakeNumber(8, true, options.alphanumeric);
106
+ const branch = '0001';
107
+ const num = first + branch;
108
+ const cnpj = `${num}${dv(num)}`;
109
+ if (options.withMask)
110
+ return mask(cnpj);
111
+ return cnpj;
112
+ }
113
+ /**
114
+ * validateOrFail()
115
+ * Valida se um número é válido e
116
+ * retorna uma exceção se não estiver
117
+ *
118
+ * @param {String|Number} value Número a ser validado
119
+ * @returns {Boolean}
120
+ */
121
+ export function validateOrFail(value) {
122
+ const cnpj = normalize(value);
123
+ if (dv(cnpj) !== cnpj.substring(12, 14)) {
124
+ throw ValidationBRError.INVALID_DV;
125
+ }
126
+ return true;
127
+ }
128
+ /**
129
+ * validate()
130
+ * Valida se um número é válido
131
+ *
132
+ * @param {String|Number} value Número a ser validado
133
+ * @returns {Boolean}
134
+ */
135
+ export function validate(value) {
136
+ try {
137
+ return validateOrFail(value);
138
+ }
139
+ catch (error) {
140
+ return false;
141
+ }
142
+ }
143
+ /**
144
+ * Retorna String sem máscara
145
+ *
146
+ * @param {String|Number} value Valor a remover máscara
147
+ * @returns {String}
148
+ */
149
+ export const normalize = (value) => {
150
+ return clearValue(value, 14, {
151
+ fillZerosAtLeft: false,
152
+ rejectEmpty: true,
153
+ rejectHigherLength: true,
154
+ rejectEqualSequence: true,
155
+ });
156
+ };
157
+ export default validate;
158
+ /**
159
+ *
160
+ * Converte o número para
161
+ *
162
+ *
163
+ */
164
+ function asciiTableConverter(character) {
165
+ if (/^\d$/.test(character))
166
+ return +character;
167
+ const ascii = character.toLocaleUpperCase().charCodeAt(0) - 48;
168
+ return ascii;
169
+ }
170
+ /**
171
+ *
172
+ *
173
+ *
174
+ */
175
+ function sumToDvWithAlpha(value, multiplier) {
176
+ const sum = [...value]
177
+ .map(character => asciiTableConverter(character))
178
+ .reduce((sum, asciiChar, index) => sum + asciiChar * multiplier[index], 0);
179
+ return sumToDV(sum);
180
+ }
181
+ //# sourceMappingURL=cnpj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cnpj.js","sourceRoot":"","sources":["../src/cnpj.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * isCPF()
3
+ * Calcula se um CPF é válido
4
+ *
5
+ * @doc
6
+ * CPF deve possuir 11 dígitos.
7
+ *
8
+ * - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
9
+ *
10
+ * - O caractere 9 refere-se à região fiscal emissora do documento
11
+ * 1 – DF, GO, MS, MT e TO
12
+ * 2 – AC, AM, AP, PA, RO e RR
13
+ * 3 – CE, MA e PI
14
+ * 4 – AL, PB, PE, RN
15
+ * 5 – BA e SE
16
+ * 6 – MG
17
+ * 7 – ES e RJ
18
+ * 8 – SP
19
+ * 9 – PR e SC
20
+ * 0 – RS
21
+ *
22
+ * - Os caracteres 10 e 11 são dígitos verificadores.
23
+ *
24
+ * 1) Partes do número
25
+ * ------------------------------------------------
26
+ * | Número | R | DV |
27
+ * 2 8 0 . 0 1 2 . 3 8 9 - 3 8
28
+ *
29
+ * 2) Cálculo do primeiro DV.
30
+ *
31
+ * - Soma-se o produto das algarismos 1 a 9 pelos números 10, 9, 8, 7, 6, 5, 4, 3, 2
32
+ *
33
+ * 2 8 0 0 1 2 3 8 9
34
+ * x x x x x x x x x
35
+ * 10 9 8 7 6 5 4 3 2
36
+ * = 20 +72 +0 +0 +6 +10 +12 +24 +18 = 162
37
+ *
38
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
39
+ * 162 / 11 tem resto 8. 11 - 8 = 3. DV1 é 3.
40
+ * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
41
+ *
42
+ * 3) Cálculo do segundo DV.
43
+ *
44
+ * - Soma-se o produto das algarismos 1 a 10 pelos números 11, 10, 9, 8, 7, 6, 5, 4, 3, 2
45
+ *
46
+ * 2 8 0 0 1 2 3 8 9 3
47
+ * x x x x x x x x x x
48
+ * 11 10 9 8 7 6 5 4 3 2
49
+ * = 22 +80 +0 +0 +7 +12 +15 +32 +27 = 201
50
+ *
51
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
52
+ * 201 / 11 tem resto 3. 11 - 3 = 8. DV2 é 8.
53
+ * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
54
+ *
55
+ * Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/
56
+ *
57
+ * @param {String} value Título eleitoral
58
+ * @returns {Boolean}
59
+ */
60
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
61
+ import { sumElementsByMultipliers, sumToDV, clearValue, fakeNumber, applyMask } from './utils.js';
62
+ /**
63
+ * dv()
64
+ * Calcula o dígito verificador
65
+ *
66
+ * @param {Number|String} value
67
+ * @returns {String}
68
+ */
69
+ export const dv = (value) => {
70
+ const cpf = clearValue(value, 9, {
71
+ trimAtRight: true,
72
+ rejectEmpty: true,
73
+ });
74
+ const sum1 = sumElementsByMultipliers(cpf, [10, 9, 8, 7, 6, 5, 4, 3, 2]);
75
+ const dv1 = sumToDV(sum1);
76
+ const sum2 = sumElementsByMultipliers(cpf + dv1, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
77
+ const dv2 = sumToDV(sum2);
78
+ return `${dv1}${dv2}`;
79
+ };
80
+ /**
81
+ * Aplica uma máscara ao número informado
82
+ *
83
+ * @param {String} value Número de Processo
84
+ * @returns {String} Valor com a máscara
85
+ */
86
+ export const mask = (value) => applyMask(value, '000.000.000-00');
87
+ /**
88
+ * fake()
89
+ * Gera um número válido
90
+ *
91
+ * @returns {String}
92
+ */
93
+ export const fake = (withMask = false) => {
94
+ const num = fakeNumber(9, true);
95
+ const cpf = `${num}${dv(num)}`;
96
+ if (withMask)
97
+ return mask(cpf);
98
+ return cpf;
99
+ };
100
+ /**
101
+ * validateOrFail()
102
+ * Valida se um número é válido e
103
+ * retorna uma exceção se não estiver
104
+ *
105
+ * @param {String|Number} value Número a ser validado
106
+ * @returns {Boolean}
107
+ */
108
+ export const validateOrFail = (value) => {
109
+ const cpf = normalize(value);
110
+ if (dv(cpf) !== cpf.substring(9, 11)) {
111
+ throw ValidationBRError.INVALID_DV;
112
+ }
113
+ return true;
114
+ };
115
+ /**
116
+ * validate()
117
+ * Valida se um número é válido
118
+ *
119
+ * @param {String|Number} value Número a ser validado
120
+ * @returns {Boolean}
121
+ */
122
+ export const validate = (value) => {
123
+ try {
124
+ return validateOrFail(value);
125
+ }
126
+ catch (error) {
127
+ return false;
128
+ }
129
+ };
130
+ /**
131
+ * Retorna String sem máscara
132
+ *
133
+ * @param {String|Number} value Valor a remover máscara
134
+ * @returns {String}
135
+ */
136
+ export const normalize = (value) => {
137
+ return clearValue(value, 11, {
138
+ fillZerosAtLeft: true,
139
+ rejectEmpty: true,
140
+ rejectHigherLength: true,
141
+ rejectEqualSequence: true,
142
+ });
143
+ };
144
+ export default validate;
145
+ //# sourceMappingURL=cpf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpf.js","sourceRoot":"","sources":["../src/cpf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;QAC/B,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAE3F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEhC,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAE/B,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,iBAAiB,CAAC,UAAU,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAW,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC1D,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE;QAC3B,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { validate as cnh } from './cnh.js';
2
+ import { validate as cnpj } from './cnpj.js';
3
+ import { validate as cpf } from './cpf.js';
4
+ import { validate as judicialProcess } from './judicialProcess.js';
5
+ import { validate as nup17 } from './nup17.js';
6
+ import { validate as phone } from './phone.js';
7
+ import { validate as pisPasep } from './pisPasep.js';
8
+ import { validate as postalCode } from './postalCode.js';
9
+ import { validate as renavam } from './renavam.js';
10
+ import { validate as tituloEleitor } from './tituloEleitor.js';
11
+ export const isCNH = (value) => cnh(value);
12
+ export const isCNPJ = (value) => cnpj(value);
13
+ export const isCPF = (value) => cpf(value);
14
+ export const isJudicialProcess = (value) => judicialProcess(value);
15
+ export const isPhone = (value) => phone(value);
16
+ export const isPIS = (value) => pisPasep(value);
17
+ export const isPostalCode = (value) => postalCode(value);
18
+ export const isRenavam = (value) => renavam(value);
19
+ export const isTituloEleitor = (value) => tituloEleitor(value);
20
+ export const isNUP17 = (value) => nup17(value);
21
+ export default {
22
+ isCNH,
23
+ isCNPJ,
24
+ isCPF,
25
+ isJudicialProcess,
26
+ isPhone,
27
+ isPIS,
28
+ isPostalCode,
29
+ isRenavam,
30
+ isTituloEleitor,
31
+ isNUP17,
32
+ };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEhE,eAAe;IACb,KAAK;IACL,MAAM;IACN,KAAK;IACL,iBAAiB;IACjB,OAAO;IACP,KAAK;IACL,YAAY;IACZ,SAAS;IACT,eAAe;IACf,OAAO;CACR,CAAC"}