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
@@ -0,0 +1,132 @@
1
+ /**
2
+ * isPostalCode()
3
+ * Calcula se um código de rastreamento postal no formato JT194690698BR é válido.
4
+ *
5
+ * @doc
6
+ * - O número de registro postal deve possuir 13 caracters no formato JT194690698BR.
7
+ *
8
+ * - Os caracteres 1 e 2 informam o tipo do objeto. Ex.: SX é Sedex, RC é carta registrada etc.
9
+ *
10
+ * - Os caracteres de 3 a 10 são a numeração sequencial do tipo do objeto.
11
+ *
12
+ * - O caractere 11 é o dígito verificador.
13
+ *
14
+ * - Os caracteres 12 e 13 representa o código do País de onde a postagem partiu.
15
+ *
16
+ * 1) Partes do número
17
+ * ______ ___________________________ ______ _______
18
+ * | Tipo | Número | DV | País |
19
+ * | J T 1 9 4 6 9 0 6 9 8 B R |
20
+ * |______|___________________________|______|_______|
21
+ *
22
+ * 2) Cálculo do DV.
23
+ *
24
+ * - Soma-se o produto das algarismos 3 a 10 pelos números 8, 6, 4, 2, 3, 5, 9, 7
25
+ *
26
+ * 1 9 4 6 9 0 6 9
27
+ * x x x x x x x x
28
+ * 8 6 4 2 3 5 9 7
29
+ * = 8 +54 +16 +12 +27 +0 +54 +63 = 234
30
+ *
31
+ * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
32
+ * 234 / 11 tem resto 3. 11 - 3 = 8. DV1 é 8.
33
+ *
34
+ * Especificidades:
35
+ * - Caso o cálculo de DV1 retorne 0, o resultado será 5.
36
+ * - Caso retorne 1, o resto será 0
37
+ *
38
+ *
39
+ *
40
+ *
41
+ * Fonte:
42
+ *
43
+ * @param {String} value Objeto postal no formato JT194690698BR
44
+ * @returns {Boolean}
45
+ */
46
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
47
+ import { sumElementsByMultipliers, clearValue, fakeNumber, randomLetter } from './utils.js';
48
+ /**
49
+ * dv()
50
+ * Calcula o dígito verificador
51
+ *
52
+ * @param {Number|String} value
53
+ * @returns {String}
54
+ */
55
+ export const dv = (value) => {
56
+ if (!value)
57
+ throw ValidationBRError.EMPTY_VALUE;
58
+ const postalCode = String(value)
59
+ .replace(/[^0-9]+/gi, '')
60
+ .padStart(8, '0')
61
+ .substring(0, 8);
62
+ const sum = sumElementsByMultipliers(postalCode, [8, 6, 4, 2, 3, 5, 9, 7]);
63
+ const rest = sum % 11;
64
+ // const specificities = { 0: { dv: 5 }, 1: { dv: 0 } }
65
+ const specificities = [
66
+ { rest: 0, dv: 5 },
67
+ { rest: 1, dv: 0 },
68
+ ];
69
+ const specifity = specificities.find((item) => item.rest === rest);
70
+ const DV = specifity ? specifity.dv : 11 - rest;
71
+ return String(DV);
72
+ };
73
+ /**
74
+ * fake()
75
+ * Gera um número válido
76
+ *
77
+ * @returns {String}
78
+ */
79
+ export const fake = () => {
80
+ const num = fakeNumber(8, true);
81
+ const postalCode = `${randomLetter()}${randomLetter()}${num}${dv(num)}BR`;
82
+ return postalCode;
83
+ };
84
+ /**
85
+ * validateOrFail()
86
+ * Valida se um número é válido e
87
+ * retorna uma exceção se não estiver
88
+ *
89
+ * @param {String} value Número a ser validado
90
+ * @returns {Boolean}
91
+ */
92
+ export const validateOrFail = (value) => {
93
+ if (!/^[a-z]{2}([\d]{9})[a-z]{2}$/gi.test(String(value))) {
94
+ throw new Error('O número não está no formato "XX000000000XX"');
95
+ }
96
+ const postalCode = clearValue(value.substring(2, 11), 9);
97
+ if (dv(value.substring(2, 11)) !== postalCode.substring(8, 9)) {
98
+ throw ValidationBRError.INVALID_DV;
99
+ }
100
+ return true;
101
+ };
102
+ /**
103
+ * validate()
104
+ * Valida se um número é válido
105
+ *
106
+ * @param {String} value Número a ser validado
107
+ * @returns {Boolean}
108
+ */
109
+ export const validate = (value) => {
110
+ try {
111
+ return validateOrFail(value);
112
+ }
113
+ catch (error) {
114
+ return false;
115
+ }
116
+ };
117
+ /**
118
+ * Aplica uma máscara ao número informado
119
+ *
120
+ * @param {String} value Número de Processo
121
+ * @returns {String} Valor com a máscara
122
+ */
123
+ export const normalize = (value) => String(value).toLocaleUpperCase();
124
+ /**
125
+ * Alias para normalize(). PostalCode não possui máscara.
126
+ *
127
+ * @param {String} value Número de Processo
128
+ * @returns {String} Valor com a máscara
129
+ */
130
+ export const mask = (value) => normalize(value);
131
+ export default validate;
132
+ //# sourceMappingURL=postalCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postalCode.js","sourceRoot":"","sources":["../src/postalCode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * RENAVAM
3
+ * Funções auxiliares para cálculo de máscaras, validação, dígito verificador e criaçãode
4
+ * números fake.
5
+ *
6
+ * @doc
7
+ * - O número de RENAVAM deve possuir 11 caracteres
8
+ *
9
+ * - Os caracteres de 1 a 10 são a numeração documento
10
+ *
11
+ * - O caractere 11 é o dígito verificador.
12
+ *
13
+ * 1) Partes do número
14
+ * _______________________________________________
15
+ * | Número | D V |
16
+ * | 2 6 8 2 7 6 4 9 9 6 - 0 |
17
+ * |_________________________________________|_____|
18
+ *
19
+ * 2) Cálculo do DV.
20
+ *
21
+ * - Soma-se o produto dos 10 algarismos pelos números 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
22
+ *
23
+ * 2 6 8 2 7 6 4 9 9 6
24
+ * x x x x x x x x x x
25
+ * 3 2 9 8 7 6 5 4 3 2
26
+ * = 6 +12 +72 +16 +49 +36 +20 +36 +27 +12 = 286
27
+ *
28
+ * - O somatório encontrado é multiplicado por 10 e ao resultado
29
+ * é aplicado o cálculo do MOD 11.
30
+ *
31
+ * ( 286 * 10 ) / 11 tem resto 0. DV = 0. Caso o resto seja maior ou igual a
32
+ * 10, DV será 0.
33
+ *
34
+ *
35
+ */
36
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
37
+ import { sumElementsByMultipliers, clearValue, fakeNumber, applyMask } from './utils.js';
38
+ /**
39
+ * dv()
40
+ * Calcula o dígito verificador
41
+ *
42
+ * @param {Number|String} value
43
+ * @returns {String}
44
+ */
45
+ export const dv = (value) => {
46
+ const renavam = clearValue(value, 10, {
47
+ fillZerosAtLeft: true,
48
+ trimAtRight: true,
49
+ rejectEmpty: true,
50
+ });
51
+ const sum1 = sumElementsByMultipliers(renavam, [3, 2, 9, 8, 7, 6, 5, 4, 3, 2]) * 10;
52
+ const dv1 = sum1 % 11 >= 10 ? 0 : sum1 % 11;
53
+ return `${dv1}`;
54
+ };
55
+ /**
56
+ * Aplica uma máscara ao número informado
57
+ *
58
+ * @param {String} value Número de Processo
59
+ * @returns {String} Valor com a máscara
60
+ */
61
+ export const mask = (value) => applyMask(value, '0000000000-0');
62
+ /**
63
+ * fake()
64
+ * Gera um número válido
65
+ *
66
+ * @returns {String}
67
+ */
68
+ export const fake = (withMask = false) => {
69
+ const value = fakeNumber(10, true);
70
+ const renavam = `${value}${dv(value)}`;
71
+ if (withMask)
72
+ return mask(renavam);
73
+ return renavam;
74
+ };
75
+ /**
76
+ * validateOrFail()
77
+ * Valida se um número é válido e
78
+ * retorna uma exceção se não estiver
79
+ *
80
+ * @param {String|Number} value Número a ser validado
81
+ * @returns {Boolean}
82
+ */
83
+ export const validateOrFail = (value) => {
84
+ const renavam = normalize(value);
85
+ if (dv(renavam) !== renavam.substring(10, 11)) {
86
+ throw ValidationBRError.INVALID_DV;
87
+ }
88
+ return true;
89
+ };
90
+ /**
91
+ * validate()
92
+ * Valida se um número é válido
93
+ *
94
+ * @param {String|Number} value Número a ser validado
95
+ * @returns {Boolean}
96
+ */
97
+ export const validate = (value) => {
98
+ try {
99
+ return validateOrFail(value);
100
+ }
101
+ catch (error) {
102
+ return false;
103
+ }
104
+ };
105
+ /**
106
+ * Retorna String sem máscara
107
+ *
108
+ * @param {String|Number} value Valor a remover máscara
109
+ * @returns {String}
110
+ */
111
+ export const normalize = (value) => {
112
+ return clearValue(value, 11, {
113
+ fillZerosAtLeft: true,
114
+ rejectEmpty: true,
115
+ rejectHigherLength: true,
116
+ rejectEqualSequence: true,
117
+ });
118
+ };
119
+ export default validate;
120
+ //# sourceMappingURL=renavam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renavam.js","sourceRoot":"","sources":["../src/renavam.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE;QACpC,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACpF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAE5C,OAAO,GAAG,GAAG,EAAE,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,WAAoB,KAAK,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAEvC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEjC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC9C,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,145 @@
1
+ /**
2
+ * isTitulo()
3
+ * Calcula se um título eleitoral é válido
4
+ *
5
+ * @doc
6
+ * Título de eleitor deve possuir 12 dígitos.
7
+ *
8
+ * - Os caracteres 1 a 8 são números sequenciais.
9
+ *
10
+ * - Os caracteres 9 e 10 representam os estados da federação onde o título
11
+ * foi emitido (01 = SP, 02 = MG, 03 = RJ, 04 = RS, 05 = BA, 06 = PR, 07 = CE, 08 = PE,
12
+ * 09 = SC, 10 = GO, 11 = MA12 = PB, 13 = PA, 14 = ES, 15 = PI, 16 = RN, 17 = AL,
13
+ * 18 = MT, 19 = MS, 20 = DF, 21 = SE, 22 = AM, 23 = RO, 24 = AC, 25 = AP, 26 = RR,
14
+ * 27 = TO, 28 = Exterior(ZZ).
15
+ *
16
+ * - Os caracteres 11 e 12 são dígitos verificadores.
17
+ *
18
+ * 1) Partes do número
19
+ * ------------------------------------------------
20
+ * | Número Sequencial | UF | DV |
21
+ * 1 0 2 3 8 5 0 1 0 6 7 1
22
+ *
23
+ * 2) Cálculo do primeiro DV.
24
+ *
25
+ * - Soma-se o produto das algarismos 1 a 8 pelos números 2, 3, 4, 5, 6, 7, 8 e 9.
26
+ *
27
+ * 1 0 2 3 8 5 0 1
28
+ * x x x x x x x x
29
+ * 2 3 4 5 6 7 8 9
30
+ * = 2 + 0 + 8 +15 +48 +35 + 0 + 9 = 117
31
+ *
32
+ * - O somatório encontrado é dividido por 11. O DV1 é o resto da divisão. Se o
33
+ * resto for 10, o DV1 é 0.
34
+ *
35
+ * 2.1) 117 / 11 tem resto igual a 7.
36
+ *
37
+ * 3) Cálculo do segundo DV
38
+ *
39
+ * - Soma-se o produto dos algarismos 9 a 11 (relativos aos 2 dígitos da UF e o novo
40
+ * DV1 que acabou de ser calculado) e os multiplicam pelos números 7, 8 e 9. Se o
41
+ * resto for 10, DV2 será 0.
42
+ * 0 6 7
43
+ * x x x
44
+ * 7 8 9
45
+ * = 0 +48 +63 = 111
46
+ *
47
+ * 3.1) 111 / 11 tem resto igual a 1.
48
+ *
49
+ * Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/
50
+ *
51
+ * @param {String} value Título eleitoral
52
+ * @returns {Boolean}
53
+ */
54
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
55
+ import { sumElementsByMultipliers, clearValue, fakeNumber, applyMask } from './utils.js';
56
+ /**
57
+ * dv()
58
+ * Calcula o dígito verificador
59
+ *
60
+ * @param {Number|String} value
61
+ * @returns {String}
62
+ */
63
+ export const dv = (value) => {
64
+ const titulo = clearValue(value, 10, {
65
+ fillZerosAtLeft: true,
66
+ trimAtRight: true,
67
+ rejectEmpty: true,
68
+ });
69
+ const uf = titulo.substring(8, 10);
70
+ if (uf > '28') {
71
+ throw new ValidationBRError(`A UF ${uf} é inválida`);
72
+ }
73
+ const sum1 = sumElementsByMultipliers(titulo.substring(0, 8), [2, 3, 4, 5, 6, 7, 8, 9]);
74
+ const dv1 = sum1 % 11 >= 10 ? 0 : sum1 % 11;
75
+ const sum2 = sumElementsByMultipliers(titulo.substring(8, 10) + dv1, [7, 8, 9]);
76
+ const dv2 = sum2 % 11 >= 10 ? 0 : sum2 % 11;
77
+ return `${dv1}${dv2}`;
78
+ };
79
+ /**
80
+ * Aplica uma máscara ao número informado
81
+ *
82
+ * @param {String} value Número de Processo
83
+ * @returns {String} Valor com a máscara
84
+ */
85
+ export const mask = (value) => applyMask(value, '0000.0000.0000');
86
+ /**
87
+ * fake()
88
+ * Gera um número válido
89
+ *
90
+ * @returns {String}
91
+ */
92
+ export const fake = (withMask = false) => {
93
+ const num = fakeNumber(8, true);
94
+ const uf = (Math.random() * 27 + 1).toFixed(0).padStart(2, '0');
95
+ const titulo = `${num}${uf}${dv(num + uf)}`;
96
+ if (withMask)
97
+ return mask(titulo);
98
+ return titulo;
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 titulo = normalize(value);
110
+ if (dv(titulo) !== titulo.substring(10, 12)) {
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, 12, {
138
+ fillZerosAtLeft: true,
139
+ rejectEmpty: true,
140
+ rejectHigherLength: true,
141
+ rejectEqualSequence: true,
142
+ });
143
+ };
144
+ export default validate;
145
+ //# sourceMappingURL=tituloEleitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tituloEleitor.js","sourceRoot":"","sources":["../src/tituloEleitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAsB,EAAU,EAAE;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE;QACnC,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAE5C,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAE5C,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,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAGhE,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;IAE5C,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAsB,EAAW,EAAE;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAGhC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5C,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,176 @@
1
+ import ValidationBRError from './_exceptions/ValidationBRError.js';
2
+ /**
3
+ * Calcula o DV verificador a partir das regras do MOD11:
4
+ * O valor da soma é dividido por 11. O resultado é o resto da divisão. Caso o resto seja
5
+ * menor que 2, ou seja, o valor da divisão seja 10 ou 11, o resultado é 0.
6
+ *
7
+ * @param {Integer} sum Soma
8
+ * @returns {Integer}
9
+ */
10
+ export function sumToDV(sum) {
11
+ return sum % 11 < 2 ? 0 : 11 - (sum % 11);
12
+ }
13
+ /**
14
+ * Checa se o número repassado possui todos os digitos iguais
15
+ *
16
+ * @example
17
+ * checkRepeatedSequence(12345678)
18
+ * // -> false
19
+ * checkRepeatedSequence(11111111)
20
+ * // -> true
21
+ *
22
+ */
23
+ export function checkRepeatedSequence(value) {
24
+ return [...value].every(digit => digit === value[0]);
25
+ }
26
+ /**
27
+ * Multiplica os elementos de uma string com os elementos de outra, ou de um array
28
+ * e soma o resultado ao final
29
+ *
30
+ * @example
31
+ * sumElementsByMultipliers('123', '987') //-> 46
32
+ * sumElementsByMultipliers('123', [9, 8, 7]) //-> 46
33
+ *
34
+ * @param {String} value
35
+ * @param {String|Array} multiplier
36
+ * @returns {Integer} Somatório
37
+ */
38
+ export function sumElementsByMultipliers(value, multiplier) {
39
+ return multiplier.reduce((accu, curr, i) => accu + curr * Number(value[i]), 0);
40
+ }
41
+ /**
42
+ * fakeNumber()
43
+ * Cria um número aleatório com o número de caracteres
44
+ *
45
+ * @example
46
+ * fakeNumber(8, true) // -> 00083159
47
+ * fakeNumber(4) // -> 831
48
+ *
49
+ * @param {Integer} length
50
+ * @param {Boolean} forceLength Adiciona zeros à esquerda para ter os números de caractes exatos
51
+ * @returns {String}
52
+ */
53
+ export function fakeNumber(length, forceLength = false, isAlpha = false) {
54
+ let value;
55
+ if (isAlpha)
56
+ value = Math.round(Math.random() * 36 ** length).toString(36).toLocaleUpperCase();
57
+ else
58
+ value = Math.floor(Math.random() * 10 ** length).toString();
59
+ if (forceLength)
60
+ return String(value).padStart(length, '0');
61
+ return String(value);
62
+ }
63
+ /**
64
+ * Limpa um número informado, retirando caracteres diferentes de números,
65
+ * preenchendo com zeros à esquerda se for menor que o tamanho exato e
66
+ * removendo uma parte do número se for maior que tamanho definido.
67
+ *
68
+ * 1) Retira caracteres não-numéricos
69
+ * 2) Preenche com zeros à esquerda se 'value' for menor que 'length'
70
+ * 3) Remove caracteres à direita se 'value' for maior que 'length'
71
+ *
72
+ * @example
73
+ * clearValue(12345-6, 6) // -> 123456
74
+ * clearValue(12345678, 3) // -> 123
75
+ * clearValue(12345, 10) // -> 0000001234
76
+ *
77
+ * @param {Number|String} value
78
+ * @param {Number} length Tamanho exato. Se for null, só retira os caracteres não-numéricos
79
+ * @returns {String} Número com o tamanho exato
80
+ */
81
+ export function clearValue(value, length = null, options) {
82
+ let clearedValue = String(value).replace(/([/.()\s-]+)/gi, '');
83
+ if (options) {
84
+ const shouldRejectEmpty = options.rejectEmpty === true && clearedValue.length === 0;
85
+ if (shouldRejectEmpty) {
86
+ throw ValidationBRError.EMPTY_VALUE;
87
+ }
88
+ const shouldRejectHigherLength = options.rejectHigherLength === true && length && clearedValue.length > length;
89
+ if (shouldRejectHigherLength) {
90
+ throw ValidationBRError.MAX_LEN_EXCEDEED;
91
+ }
92
+ const shouldRejectEqualSequence = options.rejectEqualSequence === true && length;
93
+ if (shouldRejectEqualSequence) {
94
+ if (checkRepeatedSequence(clearedValue))
95
+ throw ValidationBRError.REPEATED_SEQUENCE;
96
+ }
97
+ if (length && options.fillZerosAtLeft)
98
+ clearedValue = clearedValue.padStart(length, '0');
99
+ if (length && options.trimAtRight)
100
+ clearedValue = clearedValue.substring(0, length);
101
+ }
102
+ return clearedValue;
103
+ }
104
+ /**
105
+ * insertAtPosition()
106
+ * Insere um conjunto de caracteres em um local específico de uma string
107
+ *
108
+ * @example
109
+ * insertAtPosition('AAABBB', 'C', 3) // -> AAACBBB
110
+ * insertAtPosition('000011122223445555', 99, 7) // -> 00001119922223445555
111
+ *
112
+ * @param {String|Number} value Valor original
113
+ * @param {String|Number} insertValue Valor que será inserido
114
+ * @param {String|Number} position Posição que receberá o novo valor
115
+ * @returns {String}
116
+ *
117
+ */
118
+ export function insertAtPosition(value, insertValue, position) {
119
+ return `${value.substring(0, position)}${insertValue}${value.substring(position)}`;
120
+ }
121
+ /**
122
+ * removeFromPosition()
123
+ * Retira um conjunto de caracteres de um local específico de uma string
124
+ *
125
+ * @example
126
+ * removeFromPosition('00001119922223445555', 7,9) // -> 000011122223445555
127
+ * removeFromPosition('AAACBBB', 3,4) // -> AAABBB
128
+ *
129
+ * @param {String|Number} value Valor original
130
+ * @param {String|Number} startPosition
131
+ * @param {String|Number} endPosition
132
+ * @returns {String}
133
+ *
134
+ */
135
+ export function removeFromPosition(value, startPosition, endPosition) {
136
+ return [value.slice(0, startPosition), value.slice(endPosition)].join('');
137
+ }
138
+ /**
139
+ * applyMask()
140
+ * Aplica uma máscara a uma string
141
+ *
142
+ * @example
143
+ * applyMask('59650000', '00.000-000') // -> 59.650-000
144
+ * applyMask('99877665544', '(00) 0 0000-0000') // -> (99) 8 7766-5544
145
+ *
146
+ * @param {String|Number} value Valor original
147
+ * @param {String} mask
148
+ * @returns {String}
149
+ *
150
+ */
151
+ export function applyMask(value, mask) {
152
+ const maskLen = clearValue(mask).length;
153
+ let masked = clearValue(value, maskLen, { fillZerosAtLeft: true, trimAtRight: true });
154
+ const specialChars = ['/', '-', '.', '(', ')', ' '];
155
+ for (let position = 0; position < mask.length; position += 1) {
156
+ const current = mask[position];
157
+ if (specialChars.includes(current))
158
+ masked = insertAtPosition(masked, current, position);
159
+ }
160
+ return masked;
161
+ }
162
+ /**
163
+ * randomLetter()
164
+ * Pega uma letra maiúscula aleatoriamente
165
+ *
166
+ * @example
167
+ * randomLetter() // -> A
168
+ * randomLetter() // -> S
169
+ *
170
+ * @returns {String}
171
+ */
172
+ export function randomLetter() {
173
+ const idx = Math.floor(1 + Math.random() * 26);
174
+ return String.fromCharCode(idx + 64);
175
+ }
176
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export declare const isCNH: (value: string | number) => boolean;
2
2
  export declare const isCNPJ: (value: string | number) => boolean;
3
3
  export declare const isCPF: (value: string | number) => boolean;
4
4
  export declare const isJudicialProcess: (value: string) => boolean;
5
+ export declare const isPhone: (value: string | number) => boolean;
5
6
  export declare const isPIS: (value: string) => boolean;
6
7
  export declare const isPostalCode: (value: string) => boolean;
7
8
  export declare const isRenavam: (value: string) => boolean;
@@ -12,6 +13,7 @@ declare const _default: {
12
13
  isCNPJ: (value: string | number) => boolean;
13
14
  isCPF: (value: string | number) => boolean;
14
15
  isJudicialProcess: (value: string) => boolean;
16
+ isPhone: (value: string | number) => boolean;
15
17
  isPIS: (value: string) => boolean;
16
18
  isPostalCode: (value: string) => boolean;
17
19
  isRenavam: (value: string) => boolean;
package/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isNUP17 = exports.isTituloEleitor = exports.isRenavam = exports.isPostalCode = exports.isPIS = exports.isJudicialProcess = exports.isCPF = exports.isCNPJ = exports.isCNH = void 0;
3
+ exports.isNUP17 = exports.isTituloEleitor = exports.isRenavam = exports.isPostalCode = exports.isPIS = exports.isPhone = exports.isJudicialProcess = exports.isCPF = exports.isCNPJ = exports.isCNH = void 0;
4
4
  const cnh_1 = require("./cnh");
5
5
  const cnpj_1 = require("./cnpj");
6
6
  const cpf_1 = require("./cpf");
7
7
  const judicialProcess_1 = require("./judicialProcess");
8
8
  const nup17_1 = require("./nup17");
9
+ const phone_1 = require("./phone");
9
10
  const pisPasep_1 = require("./pisPasep");
10
11
  const postalCode_1 = require("./postalCode");
11
12
  const renavam_1 = require("./renavam");
@@ -18,6 +19,8 @@ const isCPF = (value) => (0, cpf_1.validate)(value);
18
19
  exports.isCPF = isCPF;
19
20
  const isJudicialProcess = (value) => (0, judicialProcess_1.validate)(value);
20
21
  exports.isJudicialProcess = isJudicialProcess;
22
+ const isPhone = (value) => (0, phone_1.validate)(value);
23
+ exports.isPhone = isPhone;
21
24
  const isPIS = (value) => (0, pisPasep_1.validate)(value);
22
25
  exports.isPIS = isPIS;
23
26
  const isPostalCode = (value) => (0, postalCode_1.validate)(value);
@@ -33,6 +36,7 @@ exports.default = {
33
36
  isCNPJ: exports.isCNPJ,
34
37
  isCPF: exports.isCPF,
35
38
  isJudicialProcess: exports.isJudicialProcess,
39
+ isPhone: exports.isPhone,
36
40
  isPIS: exports.isPIS,
37
41
  isPostalCode: exports.isPostalCode,
38
42
  isRenavam: exports.isRenavam,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAwC;AACxC,iCAA0C;AAC1C,+BAAwC;AACxC,uDAAgE;AAChE,mCAA4C;AAC5C,yCAAkD;AAClD,6CAAsD;AACtD,uCAAgD;AAChD,mDAA4D;AAErD,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,cAAG,EAAC,KAAK,CAAC,CAAC;AAAxD,QAAA,KAAK,SAAmD;AAC9D,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,eAAI,EAAC,KAAK,CAAC,CAAC;AAA1D,QAAA,MAAM,UAAoD;AAChE,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,cAAG,EAAC,KAAK,CAAC,CAAC;AAAxD,QAAA,KAAK,SAAmD;AAC9D,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,0BAAe,EAAC,KAAK,CAAC,CAAC;AAAvE,QAAA,iBAAiB,qBAAsD;AAC7E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC;AAApD,QAAA,KAAK,SAA+C;AAC1D,MAAM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,qBAAU,EAAC,KAAK,CAAC,CAAC;AAA7D,QAAA,YAAY,gBAAiD;AACnE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,kBAAO,EAAC,KAAK,CAAC,CAAC;AAAvD,QAAA,SAAS,aAA8C;AAC7D,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAC;AAA5E,QAAA,eAAe,mBAA6D;AAClF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;AAAnD,QAAA,OAAO,WAA4C;AAEhE,kBAAe;IACb,KAAK,EAAL,aAAK;IACL,MAAM,EAAN,cAAM;IACN,KAAK,EAAL,aAAK;IACL,iBAAiB,EAAjB,yBAAiB;IACjB,KAAK,EAAL,aAAK;IACL,YAAY,EAAZ,oBAAY;IACZ,SAAS,EAAT,iBAAS;IACT,eAAe,EAAf,uBAAe;IACf,OAAO,EAAP,eAAO;CACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAwC;AACxC,iCAA0C;AAC1C,+BAAwC;AACxC,uDAAgE;AAChE,mCAA4C;AAC5C,mCAA4C;AAC5C,yCAAkD;AAClD,6CAAsD;AACtD,uCAAgD;AAChD,mDAA4D;AAErD,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,cAAG,EAAC,KAAK,CAAC,CAAC;AAAxD,QAAA,KAAK,SAAmD;AAC9D,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,eAAI,EAAC,KAAK,CAAC,CAAC;AAA1D,QAAA,MAAM,UAAoD;AAChE,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,cAAG,EAAC,KAAK,CAAC,CAAC;AAAxD,QAAA,KAAK,SAAmD;AAC9D,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,0BAAe,EAAC,KAAK,CAAC,CAAC;AAAvE,QAAA,iBAAiB,qBAAsD;AAC7E,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;AAA5D,QAAA,OAAO,WAAqD;AAClE,MAAM,KAAK,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC;AAApD,QAAA,KAAK,SAA+C;AAC1D,MAAM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,qBAAU,EAAC,KAAK,CAAC,CAAC;AAA7D,QAAA,YAAY,gBAAiD;AACnE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,kBAAO,EAAC,KAAK,CAAC,CAAC;AAAvD,QAAA,SAAS,aAA8C;AAC7D,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAC;AAA5E,QAAA,eAAe,mBAA6D;AAClF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;AAAnD,QAAA,OAAO,WAA4C;AAEhE,kBAAe;IACb,KAAK,EAAL,aAAK;IACL,MAAM,EAAN,cAAM;IACN,KAAK,EAAL,aAAK;IACL,iBAAiB,EAAjB,yBAAiB;IACjB,OAAO,EAAP,eAAO;IACP,KAAK,EAAL,aAAK;IACL,YAAY,EAAZ,oBAAY;IACZ,SAAS,EAAT,iBAAS;IACT,eAAe,EAAf,uBAAe;IACf,OAAO,EAAP,eAAO;CACR,CAAC"}
package/dist/nup17.js CHANGED
@@ -100,8 +100,12 @@ exports.mask = mask;
100
100
  * @returns {String}
101
101
  */
102
102
  const fake = (withMask = false) => {
103
- const num = (0, utils_1.fakeNumber)(15, true);
104
- const nup = `${num}${(0, exports.dv)(String(num))}`;
103
+ const orgao = (0, utils_1.fakeNumber)(5, true);
104
+ const sequencial = (0, utils_1.fakeNumber)(6, true);
105
+ const currentYear = new Date().getFullYear();
106
+ const ano = String(Math.floor(Math.random() * (currentYear - 2020 + 1)) + 2020);
107
+ const num = `${orgao}${sequencial}${ano}`;
108
+ const nup = `${num}${(0, exports.dv)(num)}`;
105
109
  if (withMask)
106
110
  return (0, exports.mask)(nup);
107
111
  return nup;