validation-br 1.4.4 → 1.5.1

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 (65) hide show
  1. package/.github/workflows/test.yml +6 -6
  2. package/.prettierrc.js +1 -1
  3. package/dist/cnh.d.ts +91 -91
  4. package/dist/cnh.js +138 -133
  5. package/dist/cnh.js.map +1 -1
  6. package/dist/cnh.test.d.ts +1 -1
  7. package/dist/cnpj.d.ts +87 -82
  8. package/dist/cnpj.js +150 -124
  9. package/dist/cnpj.js.map +1 -1
  10. package/dist/cnpj.test.d.ts +1 -1
  11. package/dist/cpf.d.ts +99 -99
  12. package/dist/cpf.js +146 -141
  13. package/dist/cpf.js.map +1 -1
  14. package/dist/cpf.test.d.ts +1 -1
  15. package/dist/data/ValidationBRError.d.ts +6 -6
  16. package/dist/data/ValidationBRError.js +9 -9
  17. package/dist/data/ValidationBRError.js.map +1 -1
  18. package/dist/index.d.ts +21 -21
  19. package/dist/index.js +41 -32
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.test.d.ts +1 -1
  22. package/dist/judicialProcess.d.ts +126 -126
  23. package/dist/judicialProcess.js +189 -184
  24. package/dist/judicialProcess.js.map +1 -1
  25. package/dist/judicialProcess.test.d.ts +1 -1
  26. package/dist/nup17.d.ts +102 -102
  27. package/dist/nup17.js +154 -149
  28. package/dist/nup17.js.map +1 -1
  29. package/dist/nup17.test.d.ts +1 -1
  30. package/dist/pisPasep.d.ts +81 -81
  31. package/dist/pisPasep.js +125 -120
  32. package/dist/pisPasep.js.map +1 -1
  33. package/dist/pisPasep.test.d.ts +1 -1
  34. package/dist/postalCode.d.ts +83 -83
  35. package/dist/postalCode.js +135 -130
  36. package/dist/postalCode.js.map +1 -1
  37. package/dist/postalCode.test.d.ts +1 -1
  38. package/dist/renavam.d.ts +75 -75
  39. package/dist/renavam.js +121 -116
  40. package/dist/renavam.js.map +1 -1
  41. package/dist/renavam.test.d.ts +1 -1
  42. package/dist/tituloEleitor.d.ts +93 -93
  43. package/dist/tituloEleitor.js +142 -137
  44. package/dist/tituloEleitor.js.map +1 -1
  45. package/dist/tituloEleitor.test.d.ts +1 -1
  46. package/dist/utils-applyMask.test.d.ts +1 -1
  47. package/dist/utils-checkRepeatedSequence.test.d.ts +1 -0
  48. package/dist/utils-clearValue.test.d.ts +1 -1
  49. package/dist/utils-fakeNumber.test.d.ts +1 -1
  50. package/dist/utils-insertAtPosition.test.d.ts +1 -1
  51. package/dist/utils-invalidListGenerator.test.d.ts +1 -1
  52. package/dist/utils-randomLetter.test.d.ts +1 -1
  53. package/dist/utils-removeFromPosition.test.d.ts +1 -1
  54. package/dist/utils-sumElementsByMultipliers.test.d.ts +1 -1
  55. package/dist/utils-sumToDV.test.d.ts +1 -1
  56. package/dist/utils.d.ts +131 -133
  57. package/dist/utils.js +188 -190
  58. package/dist/utils.js.map +1 -1
  59. package/docs/Nota.COCAD.SUARA.2024.05.49.CNPJ.Alfanumerico-1.pdf +0 -0
  60. package/{.eslintrc.js → eslint.config.js} +39 -39
  61. package/jest.config.js +1 -6
  62. package/package.json +6 -27
  63. package/readme.md +42 -27
  64. package/.eslintcache +0 -1
  65. package/.eslintignore +0 -2
@@ -1,126 +1,126 @@
1
- /**
2
- * judicialProcess
3
- * Valida, mascara e cria números de processos judiciais
4
- *
5
- * @link
6
- * https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
7
- * http://ghiorzi.org/DVnew.htm#f
8
- *
9
- * @doc
10
- * Os números de processos judiciais são usados a partir de 2010 para unificar a
11
- * numeração de processos no Brasil e são usados em todos os tribunais.
12
- *
13
- * O número do processo, sem os caracteres especiais, devem possuir até 20 números
14
- * e deve seguir o padrão abaixo:
15
- *
16
- * 1) Partes do número
17
- * 0002080-25.2012.5.15.0049
18
- * NNNNNNN-DD.AAAA.J.TR.OOOO
19
- * |______|__|____|_|__|____|
20
- * | | | | | |----> Unidade de origem do processo com 4 caracteres
21
- * | | | | |--------> TR=Tribunal do segmento do poder judiciário com 2 caracteres
22
- * | | | |----------> J=Órgão do poder Judiciário com 1 caractere
23
- * | | |-------------> Ano do ajuizamento do processo com 4 caracteres
24
- * | |-----------------> Dígito verificador com 2 caracteres
25
- * |----------------------> Número sequencial do Processo, por unidade de
26
- * origem, reiniciado anualmente com 7 caracteres
27
- *
28
- * Órgãos do Poder Judiciário
29
- * 1 - Supremo Tribunal Federal
30
- * 2 - Conselho Nacional de Justiça
31
- * 3 - Superior Tribunal de Justiça
32
- * 4 - Justiça Federal
33
- * 5 - Justiça do Trabalho
34
- * 6 - Justiça Eleitoral
35
- * 7 - Justiça Militar da União
36
- * 8 - Justiça dos Estados e do Distrito Federal e Territórios
37
- * 9 - Justiça Militar Estadual
38
- *
39
- *
40
- * 2) Dígito Verificador
41
- *
42
- * O algoritmo usado para o cálculo do DV chama-se Módulo 97 de Base 10 (ISO 7064).
43
- *
44
- * Nota: O número do processo possui 20 caracteres e ultrapassa o tamanho máximo
45
- * do inteiro em javascript, impedindo que façamos o cálculo diretamente, desta
46
- * forma, será nacessária uma fatoração para que o resultado seja o correto.
47
- *
48
- * 2.1) Cálculo do DV
49
- * - Caso o DV seja conhecido, ele precisa ser removido do número e colocado
50
- * como "00" ao final. Caso não esteja incluso no número, adicione '00' ao final.
51
- *
52
- * Ex.: O processo "00020802520125150049", cujo dv é "25", será calculado como
53
- * "000208020125150049" e receberá "00" ao final. O número usado para o cálculo
54
- * do DV será "00020802012515004900"
55
- *
56
- * 2.2) Etapas de Cálculo
57
- *
58
- * 00020802012515004900
59
- * ↓↓
60
- * DV ao final como "00"
61
- *
62
- * - Aplicamos o MOD 97 aos caracteres de 0 a 7 para calcular a primeira parte
63
- * part1 = 0002080 % 97 = 43
64
- *
65
- * - Concatenamos part1 ao ano, órgão do poder judiciário e tribunal e aplicamos o MOD 97
66
- * para obtermos o valor da part2
67
- * part2 = ( part1 +''+ 2012 +''+ 5 +''+ 15 ) % 97 = 26
68
- *
69
- * - Concatemos part2 ao código do órgão de origem e ao "00" do final e aplicamos
70
- * o MOD 97 ao resultado
71
- * part3 = ( part2 + '0049' + '00') % 97 = 73
72
- *
73
- * - Subtraímos o resultado de 98
74
- * dv = 98 - 73 = 25
75
- *
76
- * O Dígito verificador é 25 e deve ser aplicado após o 7º caractere do número do processo
77
- *
78
- * Fonte: https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
79
- */
80
- /**
81
- *
82
- *
83
- */
84
- export declare const dv: (value: string) => string;
85
- /**
86
- * Aplica uma máscara ao número informado
87
- *
88
- * @param {String} value Número de Processo
89
- * @returns {String} Valor com a máscara
90
- */
91
- export declare const mask: (value: string | number) => string;
92
- /**
93
- *
94
- *
95
- */
96
- export declare const fake: (withMask?: boolean) => string;
97
- /**
98
- * validateOrFail()
99
- * Valida se um número é válido e
100
- * retorna uma exceção se não estiver
101
- *
102
- * @param {String} value Número a ser validado
103
- * @returns {Boolean}
104
- */
105
- export declare const validateOrFail: (value: string) => boolean;
106
- /**
107
- * validate()
108
- * Valida se um número é válido
109
- *
110
- * @param {String} value Número a ser validado
111
- * @returns {Boolean}
112
- */
113
- export declare const validate: (value: string) => boolean;
114
- /**
115
- * Gera um número fake da sub corte de acordo com as regras:
116
- * - Precisa ser uma string numérica de 2 dígitos.
117
- * - Não pode ser '0'. CAso seja zero, mude para '01'.
118
- *
119
- * A função aceita um parâmetro para viabilizar os testes. Caso
120
- * não seja definido, será gerado aleatoriamente.
121
- *
122
- * @param
123
- *
124
- */
125
- export declare function _getSubCourt(courte?: string | undefined): string;
126
- export default validate;
1
+ /**
2
+ * judicialProcess
3
+ * Valida, mascara e cria números de processos judiciais
4
+ *
5
+ * @link
6
+ * https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
7
+ * http://ghiorzi.org/DVnew.htm#f
8
+ *
9
+ * @doc
10
+ * Os números de processos judiciais são usados a partir de 2010 para unificar a
11
+ * numeração de processos no Brasil e são usados em todos os tribunais.
12
+ *
13
+ * O número do processo, sem os caracteres especiais, devem possuir até 20 números
14
+ * e deve seguir o padrão abaixo:
15
+ *
16
+ * 1) Partes do número
17
+ * 0002080-25.2012.5.15.0049
18
+ * NNNNNNN-DD.AAAA.J.TR.OOOO
19
+ * |______|__|____|_|__|____|
20
+ * | | | | | |----> Unidade de origem do processo com 4 caracteres
21
+ * | | | | |--------> TR=Tribunal do segmento do poder judiciário com 2 caracteres
22
+ * | | | |----------> J=Órgão do poder Judiciário com 1 caractere
23
+ * | | |-------------> Ano do ajuizamento do processo com 4 caracteres
24
+ * | |-----------------> Dígito verificador com 2 caracteres
25
+ * |----------------------> Número sequencial do Processo, por unidade de
26
+ * origem, reiniciado anualmente com 7 caracteres
27
+ *
28
+ * Órgãos do Poder Judiciário
29
+ * 1 - Supremo Tribunal Federal
30
+ * 2 - Conselho Nacional de Justiça
31
+ * 3 - Superior Tribunal de Justiça
32
+ * 4 - Justiça Federal
33
+ * 5 - Justiça do Trabalho
34
+ * 6 - Justiça Eleitoral
35
+ * 7 - Justiça Militar da União
36
+ * 8 - Justiça dos Estados e do Distrito Federal e Territórios
37
+ * 9 - Justiça Militar Estadual
38
+ *
39
+ *
40
+ * 2) Dígito Verificador
41
+ *
42
+ * O algoritmo usado para o cálculo do DV chama-se Módulo 97 de Base 10 (ISO 7064).
43
+ *
44
+ * Nota: O número do processo possui 20 caracteres e ultrapassa o tamanho máximo
45
+ * do inteiro em javascript, impedindo que façamos o cálculo diretamente, desta
46
+ * forma, será nacessária uma fatoração para que o resultado seja o correto.
47
+ *
48
+ * 2.1) Cálculo do DV
49
+ * - Caso o DV seja conhecido, ele precisa ser removido do número e colocado
50
+ * como "00" ao final. Caso não esteja incluso no número, adicione '00' ao final.
51
+ *
52
+ * Ex.: O processo "00020802520125150049", cujo dv é "25", será calculado como
53
+ * "000208020125150049" e receberá "00" ao final. O número usado para o cálculo
54
+ * do DV será "00020802012515004900"
55
+ *
56
+ * 2.2) Etapas de Cálculo
57
+ *
58
+ * 00020802012515004900
59
+ * ↓↓
60
+ * DV ao final como "00"
61
+ *
62
+ * - Aplicamos o MOD 97 aos caracteres de 0 a 7 para calcular a primeira parte
63
+ * part1 = 0002080 % 97 = 43
64
+ *
65
+ * - Concatenamos part1 ao ano, órgão do poder judiciário e tribunal e aplicamos o MOD 97
66
+ * para obtermos o valor da part2
67
+ * part2 = ( part1 +''+ 2012 +''+ 5 +''+ 15 ) % 97 = 26
68
+ *
69
+ * - Concatemos part2 ao código do órgão de origem e ao "00" do final e aplicamos
70
+ * o MOD 97 ao resultado
71
+ * part3 = ( part2 + '0049' + '00') % 97 = 73
72
+ *
73
+ * - Subtraímos o resultado de 98
74
+ * dv = 98 - 73 = 25
75
+ *
76
+ * O Dígito verificador é 25 e deve ser aplicado após o 7º caractere do número do processo
77
+ *
78
+ * Fonte: https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
79
+ */
80
+ /**
81
+ *
82
+ *
83
+ */
84
+ export declare const dv: (value: string) => string;
85
+ /**
86
+ * Aplica uma máscara ao número informado
87
+ *
88
+ * @param {String} value Número de Processo
89
+ * @returns {String} Valor com a máscara
90
+ */
91
+ export declare const mask: (value: string | number) => string;
92
+ /**
93
+ *
94
+ *
95
+ */
96
+ export declare const fake: (withMask?: boolean) => string;
97
+ /**
98
+ * validateOrFail()
99
+ * Valida se um número é válido e
100
+ * retorna uma exceção se não estiver
101
+ *
102
+ * @param {String} value Número a ser validado
103
+ * @returns {Boolean}
104
+ */
105
+ export declare const validateOrFail: (value: string) => boolean;
106
+ /**
107
+ * validate()
108
+ * Valida se um número é válido
109
+ *
110
+ * @param {String} value Número a ser validado
111
+ * @returns {Boolean}
112
+ */
113
+ export declare const validate: (value: string) => boolean;
114
+ /**
115
+ * Gera um número fake da sub corte de acordo com as regras:
116
+ * - Precisa ser uma string numérica de 2 dígitos.
117
+ * - Não pode ser '0'. CAso seja zero, mude para '01'.
118
+ *
119
+ * A função aceita um parâmetro para viabilizar os testes. Caso
120
+ * não seja definido, será gerado aleatoriamente.
121
+ *
122
+ * @param
123
+ *
124
+ */
125
+ export declare function _getSubCourt(courte?: string | undefined): string;
126
+ export default validate;
@@ -1,185 +1,190 @@
1
- "use strict";
2
- /**
3
- * judicialProcess
4
- * Valida, mascara e cria números de processos judiciais
5
- *
6
- * @link
7
- * https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
8
- * http://ghiorzi.org/DVnew.htm#f
9
- *
10
- * @doc
11
- * Os números de processos judiciais são usados a partir de 2010 para unificar a
12
- * numeração de processos no Brasil e são usados em todos os tribunais.
13
- *
14
- * O número do processo, sem os caracteres especiais, devem possuir até 20 números
15
- * e deve seguir o padrão abaixo:
16
- *
17
- * 1) Partes do número
18
- * 0002080-25.2012.5.15.0049
19
- * NNNNNNN-DD.AAAA.J.TR.OOOO
20
- * |______|__|____|_|__|____|
21
- * | | | | | |----> Unidade de origem do processo com 4 caracteres
22
- * | | | | |--------> TR=Tribunal do segmento do poder judiciário com 2 caracteres
23
- * | | | |----------> J=Órgão do poder Judiciário com 1 caractere
24
- * | | |-------------> Ano do ajuizamento do processo com 4 caracteres
25
- * | |-----------------> Dígito verificador com 2 caracteres
26
- * |----------------------> Número sequencial do Processo, por unidade de
27
- * origem, reiniciado anualmente com 7 caracteres
28
- *
29
- * Órgãos do Poder Judiciário
30
- * 1 - Supremo Tribunal Federal
31
- * 2 - Conselho Nacional de Justiça
32
- * 3 - Superior Tribunal de Justiça
33
- * 4 - Justiça Federal
34
- * 5 - Justiça do Trabalho
35
- * 6 - Justiça Eleitoral
36
- * 7 - Justiça Militar da União
37
- * 8 - Justiça dos Estados e do Distrito Federal e Territórios
38
- * 9 - Justiça Militar Estadual
39
- *
40
- *
41
- * 2) Dígito Verificador
42
- *
43
- * O algoritmo usado para o cálculo do DV chama-se Módulo 97 de Base 10 (ISO 7064).
44
- *
45
- * Nota: O número do processo possui 20 caracteres e ultrapassa o tamanho máximo
46
- * do inteiro em javascript, impedindo que façamos o cálculo diretamente, desta
47
- * forma, será nacessária uma fatoração para que o resultado seja o correto.
48
- *
49
- * 2.1) Cálculo do DV
50
- * - Caso o DV seja conhecido, ele precisa ser removido do número e colocado
51
- * como "00" ao final. Caso não esteja incluso no número, adicione '00' ao final.
52
- *
53
- * Ex.: O processo "00020802520125150049", cujo dv é "25", será calculado como
54
- * "000208020125150049" e receberá "00" ao final. O número usado para o cálculo
55
- * do DV será "00020802012515004900"
56
- *
57
- * 2.2) Etapas de Cálculo
58
- *
59
- * 00020802012515004900
60
- * ↓↓
61
- * DV ao final como "00"
62
- *
63
- * - Aplicamos o MOD 97 aos caracteres de 0 a 7 para calcular a primeira parte
64
- * part1 = 0002080 % 97 = 43
65
- *
66
- * - Concatenamos part1 ao ano, órgão do poder judiciário e tribunal e aplicamos o MOD 97
67
- * para obtermos o valor da part2
68
- * part2 = ( part1 +''+ 2012 +''+ 5 +''+ 15 ) % 97 = 26
69
- *
70
- * - Concatemos part2 ao código do órgão de origem e ao "00" do final e aplicamos
71
- * o MOD 97 ao resultado
72
- * part3 = ( part2 + '0049' + '00') % 97 = 73
73
- *
74
- * - Subtraímos o resultado de 98
75
- * dv = 98 - 73 = 25
76
- *
77
- * O Dígito verificador é 25 e deve ser aplicado após o 7º caractere do número do processo
78
- *
79
- * Fonte: https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
80
- */
81
- var __importDefault = (this && this.__importDefault) || function (mod) {
82
- return (mod && mod.__esModule) ? mod : { "default": mod };
83
- };
84
- Object.defineProperty(exports, "__esModule", { value: true });
85
- exports._getSubCourt = exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
86
- const ValidationBRError_1 = __importDefault(require("./data/ValidationBRError"));
87
- const utils_1 = require("./utils");
88
- /**
89
- *
90
- *
91
- */
92
- exports.dv = (value) => {
93
- const judicialProcess = utils_1.clearValue(value, 18, { trimAtRight: true, rejectEmpty: true });
94
- const num = judicialProcess.substring(0, 7);
95
- const yearAndCourt = judicialProcess.substring(7, 14);
96
- const origin = judicialProcess.substring(14, 18);
97
- return String(98 - (Number(`${Number(`${Number(num) % 97}${yearAndCourt}`) % 97}${origin}00`) % 97)).padStart(2, '0');
98
- };
99
- /**
100
- * Aplica uma máscara ao número informado
101
- *
102
- * @param {String} value Número de Processo
103
- * @returns {String} Valor com a máscara
104
- */
105
- exports.mask = (value) => utils_1.applyMask(value, '0000000-00.0000.0.00.0000');
106
- /**
107
- *
108
- *
109
- */
110
- exports.fake = (withMask = false) => {
111
- const num = utils_1.fakeNumber(7, true);
112
- const year = new Date().getFullYear() - +utils_1.fakeNumber(1);
113
- let courte1 = utils_1.fakeNumber(1, true); // Não pode ser '0'
114
- courte1 = courte1 === '0' ? '1' : courte1;
115
- const courte2 = _getSubCourt();
116
- const courte = `${courte1}${courte2}`;
117
- const origin = utils_1.fakeNumber(4, true);
118
- const judicialProcess = `${num}${year}${courte}${origin}`;
119
- const digits = exports.dv(judicialProcess);
120
- const finalNumber = utils_1.insertAtPosition(judicialProcess, digits, 7);
121
- if (withMask)
122
- return exports.mask(finalNumber);
123
- return finalNumber;
124
- };
125
- /**
126
- * validateOrFail()
127
- * Valida se um número é válido e
128
- * retorna uma exceção se não estiver
129
- *
130
- * @param {String} value Número a ser validado
131
- * @returns {Boolean}
132
- */
133
- exports.validateOrFail = (value) => {
134
- const judicialProcess = utils_1.clearValue(value, 20, {
135
- fillZerosAtLeft: true,
136
- rejectEmpty: true,
137
- rejectHigherLength: true,
138
- });
139
- const processWithoutDV = utils_1.removeFromPosition(judicialProcess, 7, 9);
140
- if (processWithoutDV.substring(11, 12) === '0') {
141
- throw new Error('Código do Órgão Judiciário não pode ser "0"');
142
- }
143
- if (exports.dv(processWithoutDV) !== judicialProcess.substring(7, 9)) {
144
- throw ValidationBRError_1.default.INVALID_DV;
145
- }
146
- return true;
147
- };
148
- /**
149
- * validate()
150
- * Valida se um número é válido
151
- *
152
- * @param {String} value Número a ser validado
153
- * @returns {Boolean}
154
- */
155
- exports.validate = (value) => {
156
- try {
157
- return exports.validateOrFail(value);
158
- }
159
- catch (error) {
160
- return false;
161
- }
162
- };
163
- // ////////////////////////////////////////////
164
- //
165
- // Funções auxiliares
166
- //
167
- // ////////////////////////////////////////////
168
- /**
169
- * Gera um número fake da sub corte de acordo com as regras:
170
- * - Precisa ser uma string numérica de 2 dígitos.
171
- * - Não pode ser '0'. CAso seja zero, mude para '01'.
172
- *
173
- * A função aceita um parâmetro para viabilizar os testes. Caso
174
- * não seja definido, será gerado aleatoriamente.
175
- *
176
- * @param
177
- *
178
- */
179
- function _getSubCourt(courte = undefined) {
180
- courte = courte !== null && courte !== void 0 ? courte : utils_1.fakeNumber(2, true).toString();
181
- return +courte === 0 ? '01' : courte;
182
- }
183
- exports._getSubCourt = _getSubCourt;
184
- exports.default = exports.validate;
1
+ "use strict";
2
+ /**
3
+ * judicialProcess
4
+ * Valida, mascara e cria números de processos judiciais
5
+ *
6
+ * @link
7
+ * https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
8
+ * http://ghiorzi.org/DVnew.htm#f
9
+ *
10
+ * @doc
11
+ * Os números de processos judiciais são usados a partir de 2010 para unificar a
12
+ * numeração de processos no Brasil e são usados em todos os tribunais.
13
+ *
14
+ * O número do processo, sem os caracteres especiais, devem possuir até 20 números
15
+ * e deve seguir o padrão abaixo:
16
+ *
17
+ * 1) Partes do número
18
+ * 0002080-25.2012.5.15.0049
19
+ * NNNNNNN-DD.AAAA.J.TR.OOOO
20
+ * |______|__|____|_|__|____|
21
+ * | | | | | |----> Unidade de origem do processo com 4 caracteres
22
+ * | | | | |--------> TR=Tribunal do segmento do poder judiciário com 2 caracteres
23
+ * | | | |----------> J=Órgão do poder Judiciário com 1 caractere
24
+ * | | |-------------> Ano do ajuizamento do processo com 4 caracteres
25
+ * | |-----------------> Dígito verificador com 2 caracteres
26
+ * |----------------------> Número sequencial do Processo, por unidade de
27
+ * origem, reiniciado anualmente com 7 caracteres
28
+ *
29
+ * Órgãos do Poder Judiciário
30
+ * 1 - Supremo Tribunal Federal
31
+ * 2 - Conselho Nacional de Justiça
32
+ * 3 - Superior Tribunal de Justiça
33
+ * 4 - Justiça Federal
34
+ * 5 - Justiça do Trabalho
35
+ * 6 - Justiça Eleitoral
36
+ * 7 - Justiça Militar da União
37
+ * 8 - Justiça dos Estados e do Distrito Federal e Territórios
38
+ * 9 - Justiça Militar Estadual
39
+ *
40
+ *
41
+ * 2) Dígito Verificador
42
+ *
43
+ * O algoritmo usado para o cálculo do DV chama-se Módulo 97 de Base 10 (ISO 7064).
44
+ *
45
+ * Nota: O número do processo possui 20 caracteres e ultrapassa o tamanho máximo
46
+ * do inteiro em javascript, impedindo que façamos o cálculo diretamente, desta
47
+ * forma, será nacessária uma fatoração para que o resultado seja o correto.
48
+ *
49
+ * 2.1) Cálculo do DV
50
+ * - Caso o DV seja conhecido, ele precisa ser removido do número e colocado
51
+ * como "00" ao final. Caso não esteja incluso no número, adicione '00' ao final.
52
+ *
53
+ * Ex.: O processo "00020802520125150049", cujo dv é "25", será calculado como
54
+ * "000208020125150049" e receberá "00" ao final. O número usado para o cálculo
55
+ * do DV será "00020802012515004900"
56
+ *
57
+ * 2.2) Etapas de Cálculo
58
+ *
59
+ * 00020802012515004900
60
+ * ↓↓
61
+ * DV ao final como "00"
62
+ *
63
+ * - Aplicamos o MOD 97 aos caracteres de 0 a 7 para calcular a primeira parte
64
+ * part1 = 0002080 % 97 = 43
65
+ *
66
+ * - Concatenamos part1 ao ano, órgão do poder judiciário e tribunal e aplicamos o MOD 97
67
+ * para obtermos o valor da part2
68
+ * part2 = ( part1 +''+ 2012 +''+ 5 +''+ 15 ) % 97 = 26
69
+ *
70
+ * - Concatemos part2 ao código do órgão de origem e ao "00" do final e aplicamos
71
+ * o MOD 97 ao resultado
72
+ * part3 = ( part2 + '0049' + '00') % 97 = 73
73
+ *
74
+ * - Subtraímos o resultado de 98
75
+ * dv = 98 - 73 = 25
76
+ *
77
+ * O Dígito verificador é 25 e deve ser aplicado após o 7º caractere do número do processo
78
+ *
79
+ * Fonte: https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2
80
+ */
81
+ var __importDefault = (this && this.__importDefault) || function (mod) {
82
+ return (mod && mod.__esModule) ? mod : { "default": mod };
83
+ };
84
+ Object.defineProperty(exports, "__esModule", { value: true });
85
+ exports.validate = exports.validateOrFail = exports.fake = exports.mask = exports.dv = void 0;
86
+ exports._getSubCourt = _getSubCourt;
87
+ const ValidationBRError_1 = __importDefault(require("./data/ValidationBRError"));
88
+ const utils_1 = require("./utils");
89
+ /**
90
+ *
91
+ *
92
+ */
93
+ const dv = (value) => {
94
+ const judicialProcess = (0, utils_1.clearValue)(value, 18, { trimAtRight: true, rejectEmpty: true });
95
+ const num = judicialProcess.substring(0, 7);
96
+ const yearAndCourt = judicialProcess.substring(7, 14);
97
+ const origin = judicialProcess.substring(14, 18);
98
+ return String(98 - (Number(`${Number(`${Number(num) % 97}${yearAndCourt}`) % 97}${origin}00`) % 97)).padStart(2, '0');
99
+ };
100
+ exports.dv = dv;
101
+ /**
102
+ * Aplica uma máscara ao número informado
103
+ *
104
+ * @param {String} value Número de Processo
105
+ * @returns {String} Valor com a máscara
106
+ */
107
+ const mask = (value) => (0, utils_1.applyMask)(value, '0000000-00.0000.0.00.0000');
108
+ exports.mask = mask;
109
+ /**
110
+ *
111
+ *
112
+ */
113
+ const fake = (withMask = false) => {
114
+ const num = (0, utils_1.fakeNumber)(7, true);
115
+ const year = new Date().getFullYear() - +(0, utils_1.fakeNumber)(1);
116
+ let courte1 = (0, utils_1.fakeNumber)(1, true); // Não pode ser '0'
117
+ courte1 = courte1 === '0' ? '1' : courte1;
118
+ const courte2 = _getSubCourt();
119
+ const courte = `${courte1}${courte2}`;
120
+ const origin = (0, utils_1.fakeNumber)(4, true);
121
+ const judicialProcess = `${num}${year}${courte}${origin}`;
122
+ const digits = (0, exports.dv)(judicialProcess);
123
+ const finalNumber = (0, utils_1.insertAtPosition)(judicialProcess, digits, 7);
124
+ if (withMask)
125
+ return (0, exports.mask)(finalNumber);
126
+ return finalNumber;
127
+ };
128
+ exports.fake = fake;
129
+ /**
130
+ * validateOrFail()
131
+ * Valida se um número é válido e
132
+ * retorna uma exceção se não estiver
133
+ *
134
+ * @param {String} value Número a ser validado
135
+ * @returns {Boolean}
136
+ */
137
+ const validateOrFail = (value) => {
138
+ const judicialProcess = (0, utils_1.clearValue)(value, 20, {
139
+ fillZerosAtLeft: true,
140
+ rejectEmpty: true,
141
+ rejectHigherLength: true,
142
+ });
143
+ const processWithoutDV = (0, utils_1.removeFromPosition)(judicialProcess, 7, 9);
144
+ if (processWithoutDV.substring(11, 12) === '0') {
145
+ throw new Error('Código do Órgão Judiciário não pode ser "0"');
146
+ }
147
+ if ((0, exports.dv)(processWithoutDV) !== judicialProcess.substring(7, 9)) {
148
+ throw ValidationBRError_1.default.INVALID_DV;
149
+ }
150
+ return true;
151
+ };
152
+ exports.validateOrFail = validateOrFail;
153
+ /**
154
+ * validate()
155
+ * Valida se um número é válido
156
+ *
157
+ * @param {String} value Número a ser validado
158
+ * @returns {Boolean}
159
+ */
160
+ const validate = (value) => {
161
+ try {
162
+ return (0, exports.validateOrFail)(value);
163
+ }
164
+ catch (error) {
165
+ return false;
166
+ }
167
+ };
168
+ exports.validate = validate;
169
+ // ////////////////////////////////////////////
170
+ //
171
+ // Funções auxiliares
172
+ //
173
+ // ////////////////////////////////////////////
174
+ /**
175
+ * Gera um número fake da sub corte de acordo com as regras:
176
+ * - Precisa ser uma string numérica de 2 dígitos.
177
+ * - Não pode ser '0'. CAso seja zero, mude para '01'.
178
+ *
179
+ * A função aceita um parâmetro para viabilizar os testes. Caso
180
+ * não seja definido, será gerado aleatoriamente.
181
+ *
182
+ * @param
183
+ *
184
+ */
185
+ function _getSubCourt(courte = undefined) {
186
+ courte = courte !== null && courte !== void 0 ? courte : (0, utils_1.fakeNumber)(2, true).toString();
187
+ return +courte === 0 ? '01' : courte;
188
+ }
189
+ exports.default = exports.validate;
185
190
  //# sourceMappingURL=judicialProcess.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"judicialProcess.js","sourceRoot":"","sources":["../src/judicialProcess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"judicialProcess.js","sourceRoot":"","sources":["../src/judicialProcess.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export {};
1
+ export {};