validation-br 0.21.2 → 1.1.2

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 (49) hide show
  1. package/.eslintcache +1 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc.js +76 -11
  4. package/.github/workflows/test.yml +39 -0
  5. package/.prettierignore +1 -0
  6. package/.prettierrc.js +7 -0
  7. package/dist/{documents/cnh.js → cnh.js} +122 -153
  8. package/dist/cnh.js.map +1 -0
  9. package/dist/{documents/cnpj.js → cnpj.js} +111 -138
  10. package/dist/cnpj.js.map +1 -0
  11. package/dist/{documents/cpf.js → cpf.js} +133 -160
  12. package/dist/cpf.js.map +1 -0
  13. package/dist/index.js +24 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/judicialProcess.js +153 -0
  16. package/dist/judicialProcess.js.map +1 -0
  17. package/dist/{documents/pis-pasep.js → pisPasep.js} +113 -140
  18. package/dist/pisPasep.js.map +1 -0
  19. package/dist/postalCode.js +150 -0
  20. package/dist/postalCode.js.map +1 -0
  21. package/dist/renavam.js +108 -0
  22. package/dist/renavam.js.map +1 -0
  23. package/dist/{documents/titulo-eleitor.js → tituloEleitor.js} +130 -155
  24. package/dist/tituloEleitor.js.map +1 -0
  25. package/dist/{lib/utils.js → utils.js} +166 -175
  26. package/dist/utils.js.map +1 -0
  27. package/jest.config.js +14 -0
  28. package/package.json +60 -31
  29. package/readme.md +170 -111
  30. package/tsconfig.json +23 -0
  31. package/.babelrc +0 -15
  32. package/.prettierrc +0 -9
  33. package/LICENSE +0 -21
  34. package/dist/documents/cnh.js.map +0 -1
  35. package/dist/documents/cnpj.js.map +0 -1
  36. package/dist/documents/cpf.js.map +0 -1
  37. package/dist/documents/index.js +0 -29
  38. package/dist/documents/index.js.map +0 -1
  39. package/dist/documents/judicial-process.js +0 -177
  40. package/dist/documents/judicial-process.js.map +0 -1
  41. package/dist/documents/pis-pasep.js.map +0 -1
  42. package/dist/documents/postal-code.js +0 -151
  43. package/dist/documents/postal-code.js.map +0 -1
  44. package/dist/documents/renavam.js +0 -97
  45. package/dist/documents/renavam.js.map +0 -1
  46. package/dist/documents/titulo-eleitor.js.map +0 -1
  47. package/dist/lib/utils.js.map +0 -1
  48. package/docs.md +0 -0
  49. package/index.js +0 -3
package/readme.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # validation-br
2
2
 
3
- Biblioteca de validação de documentos pessoais do Brasil com suporte a CPF, CNPJ, Título Eleitoral, PIS/PASEP, CNH. Também valida numerações de outros tipos de registros como RENAVAM, Processos Judiciais e Objetos registrados de Rastreamento dos Correios.
3
+ Biblioteca de validação de documentos pessoais do Brasil com suporte a CPF, CNPJ, Título Eleitoral, PIS/PASEP, CNH. Também valida numerações de outros tipos de registros como RENAVAM, Processos Judiciais, Número de Protocolo do Governo Federal e Objetos registrados de Rastreamento dos Correios.
4
4
 
5
- Validation-BR também permite a criação de números fake das numerações acima para fins de teste de desenvolvimento, além de aplicação de máscaras e cálculo do dígito verificador.
6
-
7
- Validation-BR também permite criação de números fake para facilitar o desenvolvimento e testes, além de aplicar máscaras e calcular somente os dígitos verificadores.
5
+ Validation-BR também permite criação de números fake para facilitar o desenvolvimento e testes, além de aplicar máscaras e calcular somente os dígitos verificadores.
8
6
 
9
7
  # Instalação
10
8
 
@@ -26,10 +24,10 @@ Permite realizar diretamente uma validação a partir do objeto principal
26
24
 
27
25
  ```js
28
26
  // Modules
29
- const { isCPF, isCNPJ } = require('validation-br');
27
+ const { isCPF, isCNPJ } = require('validation-br')
30
28
 
31
29
  // ES6
32
- import { isCPF, isCNPJ } from 'validation-br';
30
+ import { isCPF, isCNPJ } from 'validation-br'
33
31
  ```
34
32
 
35
33
  ## Importação de submódulos
@@ -40,30 +38,30 @@ Importando os submódulos, é possível criar máscaras, números fake para test
40
38
 
41
39
  ```js
42
40
  // ES6
43
- import { dv, fake, mask, validate } from 'validation-br/cpf';
41
+ import { dv, fake, mask, validate } from 'validation-br/cpf'
44
42
 
45
43
  // Modules
46
- const cpf = require('validation-br/cpf');
47
- const { dv, fake, mask, validate } = require('validation-br/cpf');
44
+ const cpf = require('validation-br/cpf')
45
+ const { dv, fake, mask, validate } = require('validation-br/cpf')
48
46
 
49
47
  // Calculo do dígito verificador de um CPF. Os métodos aceitam inteiros e strings, inclusive com máscaras.
50
- cpf.dv(906259666); // -> '51'
51
- cpf.dv('906259666'); // -> '51'
52
- cpf.dv('906.259.666'); // -> '51'
48
+ cpf.dv(906259666) // -> '51'
49
+ cpf.dv('906259666') // -> '51'
50
+ cpf.dv('906.259.666') // -> '51'
53
51
 
54
52
  // Cria um número fake de CPF para fins de testes.
55
- cpf.fake(); // -> 90625966651
53
+ cpf.fake() // -> 90625966651
56
54
  // Passe um parâmetro true para gerar o número com máscara
57
- cpf.fake(true); // -> 906.259.666-51
55
+ cpf.fake(true) // -> 906.259.666-51
58
56
 
59
57
  // Aplique uma máscara a um cpf
60
- cpf.mask(90625966651); // -> 906.259.666-51
58
+ cpf.mask(90625966651) // -> 906.259.666-51
61
59
 
62
60
  // Valida um número
63
- cpf.validate('01234567890'); // -> true
61
+ cpf.validate('01234567890') // -> true
64
62
 
65
63
  // Valida um número e retorna exceção se a validação falhar
66
- cpf.validateOrFail('01234567890'); // -> true
64
+ cpf.validateOrFail('01234567890') // -> true
67
65
  ```
68
66
 
69
67
  ## Tabela de Conteúdo
@@ -71,12 +69,13 @@ cpf.validateOrFail('01234567890'); // -> true
71
69
  - [isCNH](#isCNH-value-) - Validação do CNH
72
70
  - [isCPF](#isCPF-value-) - Validação do CPF
73
71
  - [isCNPJ](#isCNPJ-value-) - Validação do CNPJ
72
+ - [isNUP17](#isNUP17-value-) - Validação de Número Unificado de Protocolo do Governo Federal
74
73
  - [isPostalCode](#isPostalCode-value-) - Validação de Objetos Registrados dos Correios
75
74
  - [isJudicialProcess](#isJudicialProcess-value-) - Validação de Números de Processos Judiciais
76
75
  - [isPIS](#isPIS-value-) - Validação de PIS, PASEP, NIS e NIT
77
76
  - [isPostalCode](#isPostalCode-value-) - Validação de Objetos Registrados dos Correios
78
77
  - [isRenavam](#isRenavam-value-) - Validação de RENAVAM
79
- - [isTitulo](#isTitulo-value-) - Validação do Título de Eleitor
78
+ - [isTituloEleitor](#isTituloEleitor-value-) - Validação do Título de Eleitor
80
79
 
81
80
  ### isCNH( `value` )
82
81
 
@@ -84,27 +83,27 @@ Valida o documento da carteira nacional de habilitação.
84
83
 
85
84
  ```js
86
85
  // Importação somente da validação
87
- import { isCNH } from 'validation-br';
86
+ import { isCNH } from 'validation-br'
88
87
  // ou
89
88
  // Importação do submódulo
90
- import cnh from 'validation-br/cnh';
89
+ import cnh from 'validation-br/cnh'
91
90
 
92
91
  // Valida
93
- isCNH('69044271146'); //-> true
94
- isCNH('62472927637'); //-> true
95
- isCNH('46190476839'); //-> false
96
- cnh.validate('62472927637'); //-> true
97
- cnh.validateOrFail('62472927637'); //-> true
92
+ isCNH('69044271146') //-> true
93
+ isCNH('62472927637') //-> true
94
+ isCNH('46190476839') //-> false
95
+ cnh.validate('62472927637') //-> true
96
+ cnh.validateOrFail('62472927637') //-> true
98
97
 
99
98
  // Número fake com e sem máscara
100
- cnh.fake(); // -> 62472927637
101
- cnh.fake(true); // -> 624729276-37
99
+ cnh.fake() // -> 62472927637
100
+ cnh.fake(true) // -> 624729276-37
102
101
 
103
102
  // Aplica uma máscara
104
- cnh.mask('62472927637'); // -> 624729276-37
103
+ cnh.mask('62472927637') // -> 624729276-37
105
104
 
106
105
  // Calcula o DV
107
- cnh.dv('624729276'); // -> '37'
106
+ cnh.dv('624729276') // -> '37'
108
107
  ```
109
108
 
110
109
  ### isCNPJ( `value` )
@@ -113,27 +112,27 @@ Valida um CNPJ
113
112
 
114
113
  ```js
115
114
  // Importação somente da validação
116
- import { isCNPJ } from 'validation-br';
115
+ import { isCNPJ } from 'validation-br'
117
116
  // ou
118
117
  // Importação do submódulo
119
- import cnpj from 'validation-br/cnpj';
118
+ import cnpj from 'validation-br/cnpj'
120
119
 
121
120
  // Valida
122
- isCNPJ('73.797.980/0001-79'); //-> true
123
- isCNPJ('55585709000198'); //-> true
124
- isCNPJ('99362238000180'); //-> false
125
- cnpj.validate('99362238000180'); //-> true
126
- cnpj.validateOrFail('99362238000180'); //-> true
121
+ isCNPJ('73.797.980/0001-79') //-> true
122
+ isCNPJ('55585709000198') //-> true
123
+ isCNPJ('99362238000180') //-> false
124
+ cnpj.validate('99362238000180') //-> true
125
+ cnpj.validateOrFail('99362238000180') //-> true
127
126
 
128
127
  // Número fake com e sem máscara
129
- cnpj.fake(); // -> 55585709000198
130
- cnpj.fake(true); // -> 55.585.709/0001-98
128
+ cnpj.fake() // -> 55585709000198
129
+ cnpj.fake(true) // -> 55.585.709/0001-98
131
130
 
132
131
  // Aplica uma máscara
133
- cnpj.mask('99362238000180'); // -> 99.362.238/0001-80
132
+ cnpj.mask('99362238000180') // -> 99.362.238/0001-80
134
133
 
135
134
  // Calcula o DV
136
- cnpj.dv('993622380001'); // -> '80'
135
+ cnpj.dv('993622380001') // -> '80'
137
136
  ```
138
137
 
139
138
  ### isCPF( `value` )
@@ -142,56 +141,111 @@ Valida um CPF
142
141
 
143
142
  ```js
144
143
  // Importação somente da validação
145
- import { isCPF } from 'validation-br';
144
+ import { isCPF } from 'validation-br'
146
145
  // ou
147
146
  // Importação do submódulo
148
- import cpf from 'validation-br/cpf';
147
+ import cpf from 'validation-br/cpf'
149
148
 
150
149
  // Valida
151
- isCPF('01234567890'); //-> true
152
- isCPF('012.345.678-90'); //-> true
153
- isCPF('01234567891'); //-> false
154
- cpf.validate('01234567890'); //-> true
155
- cpf.validateOrFail('01234567890'); //-> true
150
+ isCPF('01234567890') //-> true
151
+ isCPF('012.345.678-90') //-> true
152
+ isCPF('01234567891') //-> false
153
+ cpf.validate('01234567890') //-> true
154
+ cpf.validateOrFail('01234567890') //-> true
156
155
 
157
156
  // Número fake com e sem máscara
158
- cpf.fake(); // -> 01234567891
159
- cpf.fake(true); // -> 012.345.678-91
157
+ cpf.fake() // -> 01234567891
158
+ cpf.fake(true) // -> 012.345.678-91
160
159
 
161
160
  // Aplica uma máscara
162
- cpf.mask('01234567890'); // -> 012.345.678-90
161
+ cpf.mask('01234567890') // -> 012.345.678-90
163
162
 
164
163
  // Calcula o DV
165
- cpf.dv('012345678'); // -> '90'
164
+ cpf.dv('012345678') // -> '90'
166
165
  ```
167
166
 
168
167
  ### isJudicialProcess( `value` )
169
168
 
170
- Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita números com e sem pontos e traços.
169
+ Valida números de processo da esfera judicial. Esta padronização foi adotada em 2010 e de para todos os processos judiciais abertos no país seguem o mesmo padrão, seja eleitoral, cível, militar etc.
170
+
171
+ O número é composto por 6 partes:
172
+
173
+ 1. Número sequencial dado pelo órgão de registro, reiniciado a cada ano, com até 7 caracteres
174
+ 2. Dígito verificador com 2 caracteres
175
+ 3. Ano de registro com 4 caracteres
176
+ 4. Órgão do poder judiciário com 1 caractere, sendo eles:
177
+
178
+ - 1 - Supremo Tribunal Federal
179
+ - 2 - Conselho Nacional de Justiça
180
+ - 3 - Superior Tribunal de Justiça
181
+ - 4 - Justiça Federal
182
+ - 5 - Justiça do Trabalho
183
+ - 6 - Justiça Eleitoral
184
+ - 7 - Justiça Militar da União
185
+ - 8 - Justiça dos Estados e do Distrito Federal e Territórios
186
+ - 9 - Justiça Militar Estadual
187
+
188
+ 5. Tribunal do segmento do poder judiciário com 2 caracteres
189
+ 6. Código da unidade de origem do processo com 4 caracteres
190
+
191
+ ```js
192
+ // Importação somente da validação
193
+ import { isJudicialProcess } from 'validation-br'
194
+ // ou
195
+ // Importação do submódulo
196
+ import judicialProcess from 'validation-br/judicialProcess'
197
+
198
+ // Valida
199
+ isJudicialProcess('20802520125150049') //-> true
200
+ isJudicialProcess('0011006-07.2016.8.20.0100') //-> true
201
+ isJudicialProcess('00110060720168200101') //-> false
202
+ judicialProcess.validate('00110060720168200100') //-> true
203
+ judicialProcess.validateOrFail('00110060720168200100') //-> true
204
+
205
+ // Número fake com e sem máscara
206
+ judicialProcess.fake() // -> 00110060720168200100
207
+ judicialProcess.fake(true) // -> 0011006-07.2016.8.20.0100
208
+
209
+ // Aplica uma máscara
210
+ judicialProcess.mask('00110060720168200100') // -> 0011006-07.2016.8.20.0100
211
+
212
+ // Calcula o DV.
213
+ // Obs.: Antes do cálculo, é necessário que o número do processo não possua o dígito verificador para que o resultado seja correto. Isso é necessário pois o DV fica no meio da numeração, na posição 8 e 9.
214
+ judicialProcess.dv('001100620168200100') // -> '07'
215
+ ```
216
+
217
+ ### isNUP17( `value` )
218
+
219
+ Válida um Número Unificado de Protocolo de 17 dígitos. Esta numeração é usada pelo Governo Federal como forma única de numerar processos em todas os órgãos do executivo.
220
+
221
+ 1. Os primeiros 5 dígitos correspondem código do órgão
222
+ 2. Os dígitos de 6 a 11 são um número sequencial dado pelo órgão em questão e é reiniciado a cada ano
223
+ 3. Os dígitos 12 a 15 representam o ano de registro do protocolo
224
+ 4. Os caracteres 16 a 17 são o dígito verificador
171
225
 
172
226
  ```js
173
227
  // Importação somente da validação
174
- import { isJudicialProcess } from 'validation-br';
228
+ import { isNUP17 } from 'validation-br'
175
229
  // ou
176
230
  // Importação do submódulo
177
- import judicialProcess from 'validation-br/judicial-process';
231
+ import nup from 'validation-br/nup17'
178
232
 
179
233
  // Valida
180
- isJudicialProcess('71282677380'); //-> true
181
- isJudicialProcess('237.95126.95-5'); //-> true
182
- isJudicialProcess('500.12973.80-1'); //-> false
183
- judicialProcess.validate('71282677380'); //-> true
184
- judicialProcess.validateOrFail('71282677380'); //-> true
234
+ isNUP17('23037001462202165') //-> true
235
+ isNUP17('23037.001462/2021-65') //-> true
236
+ isNUP17('23037.001462/2021-66') //-> false
237
+ nup.validate('23037.001462/2021-65') //-> true
238
+ nup.validateOrFail('23037.001462/2021-65') //-> true
185
239
 
186
240
  // Número fake com e sem máscara
187
- judicialProcess.fake(); // -> 71282677380
188
- judicialProcess.fake(true); // -> 712.82677.38-0
241
+ nup.fake() // -> 71282677380
242
+ nup.fake(true) // -> 712.82677.38-0
189
243
 
190
244
  // Aplica uma máscara
191
- judicialProcess.mask('71282677380'); // -> 712.82677.38-0
245
+ nup.mask('23037001462202165') // -> 23037.001462/2021-65
192
246
 
193
247
  // Calcula o DV
194
- judicialProcess.dv('7128267738'); // -> '0'
248
+ nup.dv('230370014622021') // -> '65'
195
249
  ```
196
250
 
197
251
  ### isPIS( `value` )
@@ -200,27 +254,27 @@ Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita númer
200
254
 
201
255
  ```js
202
256
  // Importação somente da validação
203
- import { isPIS } from 'validation-br';
257
+ import { isPIS } from 'validation-br'
204
258
  // ou
205
259
  // Importação do submódulo
206
- import pis from 'validation-br/pis';
260
+ import pis from 'validation-br/pis'
207
261
 
208
262
  // Valida
209
- isPIS('71282677380'); //-> true
210
- isPIS('237.95126.95-5'); //-> true
211
- isPIS('500.12973.80-1'); //-> false
212
- pis.validate('71282677380'); //-> true
213
- pis.validateOrFail('71282677380'); //-> true
263
+ isPIS('71282677380') //-> true
264
+ isPIS('237.95126.95-5') //-> true
265
+ isPIS('500.12973.80-1') //-> false
266
+ pis.validate('71282677380') //-> true
267
+ pis.validateOrFail('71282677380') //-> true
214
268
 
215
269
  // Número fake com e sem máscara
216
- pis.fake(); // -> 71282677380
217
- pis.fake(true); // -> 712.82677.38-0
270
+ pis.fake() // -> 71282677380
271
+ pis.fake(true) // -> 712.82677.38-0
218
272
 
219
273
  // Aplica uma máscara
220
- pis.mask('71282677380'); // -> 712.82677.38-0
274
+ pis.mask('71282677380') // -> 712.82677.38-0
221
275
 
222
276
  // Calcula o DV
223
- pis.dv('7128267738'); // -> '0'
277
+ pis.dv('7128267738') // -> '0'
224
278
  ```
225
279
 
226
280
  ### isPostalCode( `value` )
@@ -234,28 +288,28 @@ Valida um código de rastreamento de objetos postais no formato XX00000000DYY, o
234
288
 
235
289
  ```js
236
290
  // Importação somente da validação
237
- import { isPostalCode } from 'validation-br';
291
+ import { isPostalCode } from 'validation-br'
238
292
  // ou
239
293
  // Importação do submódulo
240
- import postalCode from 'validation-br/postal-code';
294
+ import postalCode from 'validation-br/postalCode'
241
295
 
242
296
  // Valida
243
- isPostalCode('PN718252423BR'); //-> true
244
- isPostalCode('RY728187035CN'); //-> true
245
- isPostalCode('JT194624698BR'); //-> false
246
- postalCode.validate('PN718252423BR'); //-> true
247
- postalCode.validateOrFail('PN718252423BR'); //-> true
297
+ isPostalCode('PN718252423BR') //-> true
298
+ isPostalCode('RY728187035CN') //-> true
299
+ isPostalCode('JT194624698BR') //-> false
300
+ postalCode.validate('PN718252423BR') //-> true
301
+ postalCode.validateOrFail('PN718252423BR') //-> true
248
302
 
249
303
  // Número fake com e sem máscara.
250
- postalCode.fake(); // -> PN718252423BR
251
- postalCode.fake(true); // -> PN718252423BR
304
+ postalCode.fake() // -> PN718252423BR
305
+ postalCode.fake(true) // -> PN718252423BR
252
306
 
253
307
  // Aplica uma máscara
254
308
  // No caso de PostalCode, a máscara apenas coloca as letras em maiúsculas
255
- postalCode.mask('pn718252423br'); // -> PN718252423BR
309
+ postalCode.mask('pn718252423br') // -> PN718252423BR
256
310
 
257
311
  // Calcula o DV
258
- postalCode.dv('PN718252423BR'); // -> '3'
312
+ postalCode.dv('PN718252423BR') // -> '3'
259
313
  ```
260
314
 
261
315
  ### isRenavam( `value` )
@@ -264,68 +318,72 @@ Valida o número de um RENAVAM de 11 dígitos
264
318
 
265
319
  ```js
266
320
  // Importação somente da validação
267
- import { isRenavam } from 'validation-br';
321
+ import { isRenavam } from 'validation-br'
268
322
  // ou
269
323
  // Importação do submódulo
270
- import renavam from 'validation-br/renavam';
324
+ import renavam from 'validation-br/renavam'
271
325
 
272
326
  // Valida
273
- isRenavam('14283256656'); //-> true
274
- isRenavam('95059845976'); //-> true
275
- isRenavam('67747331626'); //-> false
276
- renavam.validate('95059845976'); //-> true
277
- renavam.validateOrFail('95059845976'); //-> true
327
+ isRenavam('14283256656') //-> true
328
+ isRenavam('95059845976') //-> true
329
+ isRenavam('67747331626') //-> false
330
+ renavam.validate('95059845976') //-> true
331
+ renavam.validateOrFail('95059845976') //-> true
278
332
 
279
333
  // Número fake com e sem máscara
280
- renavam.fake(); // -> 95059845976
281
- renavam.fake(true); // -> 9505984597-6
334
+ renavam.fake() // -> 95059845976
335
+ renavam.fake(true) // -> 9505984597-6
282
336
 
283
337
  // Aplica uma máscara
284
- renavam.mask('95059845976'); // -> 9505984597-6
338
+ renavam.mask('95059845976') // -> 9505984597-6
285
339
 
286
340
  // Calcula o DV
287
- renavam.dv('950598459'); // -> '76'
341
+ renavam.dv('950598459') // -> '76'
288
342
  ```
289
343
 
290
- ### isTitulo( `value` )
344
+ ### isTituloEleitor( `value` )
291
345
 
292
346
  Valida um título eleitoral
293
347
 
294
348
  ```js
295
349
  // Importação somente da validação
296
- import { isTitulo } from 'validation-br';
350
+ import { isTituloEleitor } from 'validation-br'
297
351
  // ou
298
352
  // Importação do submódulo
299
- import titulo from 'validation-br/titulo';
353
+ import titulo from 'validation-br/tituloEleitor'
300
354
 
301
355
  // Valida
302
- isTitulo('743650641660'); //-> true
303
- isTitulo('525028881694'); //-> true
304
- isTitulo('153016161686'); //-> false
305
- titulo.validate('01234567890'); //-> true
306
- titulo.validateOrFail('01234567890'); //-> true
356
+ isTituloEleitor('743650641660') //-> true
357
+ isTituloEleitor('525028881694') //-> true
358
+ isTituloEleitor('153016161686') //-> false
359
+ titulo.validate('01234567890') //-> true
360
+ titulo.validateOrFail('01234567890') //-> true
307
361
 
308
362
  // Número fake com e sem máscara
309
- titulo.fake(); // -> 153016161686
310
- titulo.fake(true); // -> 1530.1616.1686
363
+ titulo.fake() // -> 153016161686
364
+ titulo.fake(true) // -> 1530.1616.1686
311
365
 
312
366
  // Aplica uma máscara
313
- titulo.mask('525028881694'); // -> 5250.2888.1694
367
+ titulo.mask('525028881694') // -> 5250.2888.1694
314
368
 
315
369
  // Calcula o DV
316
- titulo.dv('5250288816'); // -> '94'
370
+ titulo.dv('5250288816') // -> '94'
317
371
  ```
318
372
 
319
- # Tests
373
+ # Testes
320
374
 
321
- ![image](https://user-images.githubusercontent.com/100168/148660802-e1d1b6e1-b447-4534-aa92-298849db6f47.png)
375
+ ![Testes](https://user-images.githubusercontent.com/100168/148857050-df40e291-a13d-4643-b64d-6603cf0a06f1.png)
322
376
 
323
377
  # Changelog
324
378
 
379
+ - **10/01/2022**:
380
+ - 1.1.0 - Adicionado NUP17 - Número Unificado de Protocolo de 17 dígitos do Governo Federal
381
+ - **09/01/2022**:
382
+ - 1.0.0 - Biblioteca convertida para Typescript e testes convertidos para Jest
325
383
  - **08/01/2022**:
326
384
  - 0.21.1 - Adicionadas as funções isRenavam e isJudicialProcess
327
385
  - **16/09/2021**:
328
- - 0.5.0 - Adicionadas as funções isCPF, isCNPJ e isTitulo
386
+ - 0.5.0 - Adicionadas as funções isCPF, isCNPJ e isTituloEleitor
329
387
  - 0.7.0 - Adicionadas as funções isPostalCode e isCNH
330
388
  - 0.8.0 - Adicionada a função isPIS
331
389
 
@@ -338,3 +396,4 @@ titulo.dv('5250288816'); // -> '94'
338
396
  - [Diferença entre PIS, PASEP, NIS e NIT](https://www.jornalcontabil.com.br/entenda-de-uma-vez-a-diferenca-entre-pis-pasep-nit-e-nis/#:~:text=NIS%20%E2%80%93%20N%C3%BAmero%20de%20Identifica%C3%A7%C3%A3o%20Social,do%20Patrim%C3%B4nio%20do%20Servidor%20P%C3%BAblico)
339
397
  - [Documentação Oficial de Numeração de Processos Judiciais](https://juslaboris.tst.jus.br/bitstream/handle/20.500.12178/30318/2008_res0065_cnj_rep01.pdf?sequence=2)
340
398
  - [Cálculos de DV](http://ghiorzi.org/DVnew.htm)
399
+ - [Cálculo do NUP17](https://www.gov.br/compras/pt-br/acesso-a-informacao/legislacao/portarias/portaria-interministerial-no-11-de-25-de-novembro-de-2019)
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": "src",
4
+ "module": "commonjs",
5
+ "esModuleInterop": true,
6
+ "target": "es6",
7
+ "moduleResolution": "node",
8
+ "sourceMap": true,
9
+ "outDir": "./dist",
10
+ "noImplicitAny": true,
11
+ "noImplicitReturns": true,
12
+ "noImplicitThis": true,
13
+ "strict": true,
14
+ "allowJs": true,
15
+ "types": ["node", "jest"],
16
+ "typeRoots": ["node_modules/@types", "index.d.ts"],
17
+ "lib": ["es6"],
18
+ "paths": {
19
+ "*": ["node_modules/*"]
20
+ }
21
+ },
22
+ "include": ["./src/**/*"]
23
+ }
package/.babelrc DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "presets": [
3
- [
4
- "@babel/preset-env",
5
- {
6
- "targets": {
7
- "chrome": "58",
8
- "ie": "11"
9
- }
10
- },
11
- "minify"
12
- ]
13
- ],
14
- "plugins": ["@babel/plugin-transform-runtime"]
15
- }
package/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "semi": true,
3
- "arrowParens": "always",
4
- "bracketSpacing": true,
5
- "endOfLine": "lf",
6
- "singleQuote": true,
7
- "trailingComma": "es5",
8
- "useTabs": false
9
- }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 Claudio Medeiros
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/documents/cnh.js"],"names":["require","sumElementsByMultipliers","sumToDV","invalidListGenerator","clearValue","applyMask","fakeNumber","dv","value","Error","cnh","invalidList","includes","sum1","substring","dv1","sum2","dv2","validateOrFail","validate","error","mask","fake","withMask","module","exports"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,eAGIA,OAAO,CAAC,cAAD,CAHX;AAAA,IACEC,wBADF,YACEA,wBADF;AAAA,IAC4BC,OAD5B,YAC4BA,OAD5B;AAAA,IACqCC,oBADrC,YACqCA,oBADrC;AAAA,IAEEC,UAFF,YAEEA,UAFF;AAAA,IAEcC,SAFd,YAEcA,SAFd;AAAA,IAEyBC,UAFzB,YAEyBA,UAFzB;AAKA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,EAAE,GAAG,SAALA,EAAK,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AACzB,MAAI,CAACA,KAAL,EAAY,MAAM,IAAIC,KAAJ,CAAU,mBAAV,CAAN;AAEZ,MAAMC,GAAG,GAAGN,UAAU,CAACI,KAAD,EAAQ,CAAR,CAAtB;AAEA,MAAMG,WAAW,GAAGR,oBAAoB,CAAC,CAAD,CAAxC;;AACA,MAAIQ,WAAW,CAACC,QAAZ,CAAqBF,GAArB,CAAJ,EAA+B;AAC7B,UAAM,IAAID,KAAJ,CAAU,kDAAV,CAAN;AACD;;AAED,MAAMI,IAAI,GAAGZ,wBAAwB,CAACS,GAAG,CAACI,SAAJ,CAAc,CAAd,EAAiB,CAAjB,CAAD,EAAsB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAtB,CAArC;AACA,MAAMC,GAAG,GAAGb,OAAO,CAACW,IAAD,CAAnB;AAEA,MAAMG,IAAI,GAAGf,wBAAwB,CACnCS,GAAG,CAACI,SAAJ,CAAc,CAAd,EAAiB,CAAjB,IAAsBC,GADa,EAEnC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,CAA9B,CAFmC,CAArC;AAIA,MAAME,GAAG,GAAGf,OAAO,CAACc,IAAD,CAAnB;AAEA,mBAAUD,GAAV,SAAgBE,GAAhB;AACD,CApBD;AAsBA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAgB;AAAA,MAAfV,KAAe,uEAAP,EAAO;AACrC,MAAME,GAAG,GAAGN,UAAU,CAACI,KAAD,EAAQ,EAAR,CAAtB;;AAEA,MAAID,EAAE,CAACG,GAAD,CAAF,KAAaA,GAAG,CAACI,SAAJ,CAAc,CAAd,EAAiB,EAAjB,CAAjB,EAAwC;AACtC,UAAM,IAAIL,KAAJ,CAAU,6BAAV,CAAN;AACD;;AAED,SAAO,IAAP;AACD,CARD;AAUA;AACA;AACA;AACA;AACA;;;AACA,IAAMU,QAAQ,GAAG,SAAXA,QAAW,GAAgB;AAAA,MAAfX,KAAe,uEAAP,EAAO;;AAC/B,MAAI;AACF,WAAOU,cAAc,CAACV,KAAD,CAArB;AACD,GAFD,CAEE,OAAOY,KAAP,EAAc;AACd,WAAO,KAAP;AACD;AACF,CAND;AAQA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,IAAI,GAAG,SAAPA,IAAO;AAAA,MAACb,KAAD,uEAAS,EAAT;AAAA,SAAgBH,SAAS,CAACG,KAAD,EAAQ,cAAR,CAAzB;AAAA,CAAb;AAEA;AACA;AACA;AACA;AACA;;;AACA,IAAMc,IAAI,GAAG,SAAPA,IAAO,GAAsB;AAAA,MAArBC,QAAqB,uEAAV,KAAU;AACjC,MAAMf,KAAK,GAAGF,UAAU,CAAC,CAAD,EAAI,IAAJ,CAAxB;AAEA,MAAMI,GAAG,aAAMF,KAAN,SAAcD,EAAE,CAACC,KAAD,CAAhB,CAAT;AAEA,MAAIe,QAAJ,EAAc,OAAOF,IAAI,CAACX,GAAD,CAAX;AAEd,SAAOA,GAAP;AACD,CARD;;AAUAc,MAAM,CAACC,OAAP,GAAiB;AACflB,EAAAA,EAAE,EAAFA,EADe;AACXe,EAAAA,IAAI,EAAJA,IADW;AACLD,EAAAA,IAAI,EAAJA,IADK;AACCF,EAAAA,QAAQ,EAARA,QADD;AACWD,EAAAA,cAAc,EAAdA;AADX,CAAjB","sourcesContent":["/**\n * isCNH()\n * Calcula se uma CNH é válida\n *\n * @doc\n * CNH deve possuir 11 caracteres\n *\n * - Os caracteres 1 a 9 são números sequenciais.\n *\n *\n * - Os caracteres 10 e 11 são dígitos verificadores.\n *\n * 1) Partes do número\n * ____________________________ ______\n * | Número | D V |\n * | 5 8 3 1 6 7 9 4 5 3 4 |\n * |____________________________|_____|\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 9 pelos números 2, 3, 4, 5, 6, 7, 8, 9, 10.\n *\n * 5 8 3 1 6 7 9 4 5\n * x x x x x x x x x\n * 2 3 4 5 6 7 8 9 10\n * = 10 +24 +12 +5 +36 +49 +72 +36 +50 = 294\n *\n * - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o\n * resto for 10, o DV1 é 0.\n *\n * 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3\n * DV1 = 3\n *\n * 3) Cálculo do segundo DV\n *\n * - Soma-se o produto das algarismos 1 a 9 juntamente com o 10 caractere\n * que é o DV1, pelos números 3, 4, 5, 6, 7, 8, 9, 10, 11, 2. O DV1 será\n * multiplicado por 2 e ficará no final.\n *\n * 5 8 3 1 6 7 9 4 5 3\n * x x x x x x x x x x\n * 3 4 5 6 7 8 9 10 11 2\n * = 10 +24 +12 +5 +36 +49 +72 +36 +50 +6 = 348\n *\n * 3.1) 348 / 11 tem resto igual a 7. 11 - 7 = 4.\n * DV2 = 4\n *\n * - O somatório encontrado é dividido por 11. O DV2 é 11 subtraído do resto da divisão. Se o\n * resto for 10, o DV2 é 0.\n *\n * Fonte: https://www.devmedia.com.br/forum/validacao-de-cnh/372972\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\n\nconst {\n sumElementsByMultipliers, sumToDV, invalidListGenerator,\n clearValue, applyMask, fakeNumber,\n} = require('../lib/utils');\n\n/**\n * Calcula o Dígito Verificador de um RENAVAM informado\n *\n * @returns String Número fake de um cnh válido\n */\nconst dv = (value = '') => {\n if (!value) throw new Error('CNH não informado');\n\n const cnh = clearValue(value, 9);\n\n const invalidList = invalidListGenerator(9);\n if (invalidList.includes(cnh)) {\n throw new Error('CNH não pode ser uma sequência de números iguais');\n }\n\n const sum1 = sumElementsByMultipliers(cnh.substring(0, 9), [2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const dv1 = sumToDV(sum1);\n\n const sum2 = sumElementsByMultipliers(\n cnh.substring(0, 9) + dv1,\n [3, 4, 5, 6, 7, 8, 9, 10, 11, 2],\n );\n const dv2 = sumToDV(sum2);\n\n return `${dv1}${dv2}`;\n};\n\n/**\n * Valida um número de cnh e retorna uma exceção caso seja inválido\n *\n * @returns String Número fake de um cnh válido\n */\nconst validateOrFail = (value = '') => {\n const cnh = clearValue(value, 11);\n\n if (dv(cnh) !== (cnh.substring(9, 11))) {\n throw new Error('Dígito verificador inválido');\n }\n\n return true;\n};\n\n/**\n * Valida um número de cnh\n *\n * @returns String Valor a ser validado\n */\nconst validate = (value = '') => {\n try {\n return validateOrFail(value);\n } catch (error) {\n return false;\n }\n};\n\n/**\n * Aplica uma máscara a uma string\n *\n * @returns String string com a máscara aplicada\n */\nconst mask = (value = '') => applyMask(value, '000000000-00');\n\n/**\n * Cria um número fake\n *\n * @returns String Número fake porém válido\n */\nconst fake = (withMask = false) => {\n const value = fakeNumber(9, true);\n\n const cnh = `${value}${dv(value)}`;\n\n if (withMask) return mask(cnh);\n\n return cnh;\n};\n\nmodule.exports = {\n dv, fake, mask, validate, validateOrFail,\n};\n"],"file":"cnh.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/documents/cnpj.js"],"names":["require","invalidListGenerator","sumElementsByMultipliers","sumToDV","clearValue","fakeNumber","applyMask","dv","value","cnpj","blackList","includes","Error","sum1","substring","dv1","sum2","dv2","mask","fake","withMask","num","validateOrFail","validate","error","module","exports"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,eAGIA,OAAO,CAAC,cAAD,CAHX;AAAA,IACEC,oBADF,YACEA,oBADF;AAAA,IACwBC,wBADxB,YACwBA,wBADxB;AAAA,IACkDC,OADlD,YACkDA,OADlD;AAAA,IAEEC,UAFF,YAEEA,UAFF;AAAA,IAEcC,UAFd,YAEcA,UAFd;AAAA,IAE0BC,SAF1B,YAE0BA,SAF1B;;AAKA,IAAMC,EAAE,GAAG,SAALA,EAAK,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AACzB,MAAMC,IAAI,GAAGL,UAAU,CAACI,KAAD,EAAQ,EAAR,CAAvB;AAEA,MAAME,SAAS,GAAGT,oBAAoB,CAAC,EAAD,CAAtC;;AACA,MAAIS,SAAS,CAACC,QAAV,CAAmBF,IAAnB,CAAJ,EAA8B;AAC5B,UAAM,IAAIG,KAAJ,CAAU,oBAAV,CAAN;AACD;;AAED,MAAMC,IAAI,GAAGX,wBAAwB,CAACO,IAAI,CAACK,SAAL,CAAe,CAAf,EAAkB,EAAlB,CAAD,EAAwB,cAAxB,CAArC;AACA,MAAMC,GAAG,GAAGZ,OAAO,CAACU,IAAD,CAAnB;AAEA,MAAMG,IAAI,GAAGd,wBAAwB,CAACO,IAAI,CAACK,SAAL,CAAe,CAAf,EAAkB,EAAlB,IAAwBC,GAAzB,EAA8B,eAA9B,CAArC;AACA,MAAME,GAAG,GAAGd,OAAO,CAACa,IAAD,CAAnB;AAEA,mBAAUD,GAAV,SAAgBE,GAAhB;AACD,CAfD;AAiBA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACV,KAAD;AAAA,SAAWF,SAAS,CAACE,KAAD,EAAQ,oBAAR,CAApB;AAAA,CAAb;AAEA;AACA;AACA;AACA;;;AACA,IAAMW,IAAI,GAAG,SAAPA,IAAO,GAAsB;AAAA,MAArBC,QAAqB,uEAAV,KAAU;AACjC,MAAMC,GAAG,GAAGhB,UAAU,CAAC,EAAD,EAAK,IAAL,CAAtB;AAEA,MAAMI,IAAI,aAAMY,GAAN,SAAYd,EAAE,CAACc,GAAD,CAAd,CAAV;AAEA,MAAID,QAAJ,EAAc,OAAOF,IAAI,CAACT,IAAD,CAAX;AACd,SAAOA,IAAP;AACD,CAPD;AASA;AACA;AACA;AACA;AACA;;;AACA,IAAMa,cAAc,GAAG,SAAjBA,cAAiB,CAACd,KAAD,EAAW;AAChC,MAAMC,IAAI,GAAGL,UAAU,CAACI,KAAD,EAAQ,EAAR,CAAvB;;AAEA,MAAID,EAAE,CAACE,IAAD,CAAF,KAAaA,IAAI,CAACK,SAAL,CAAe,EAAf,EAAmB,EAAnB,CAAjB,EAAyC;AACvC,UAAM,IAAIF,KAAJ,CAAU,6BAAV,CAAN;AACD;;AAED,SAAO,IAAP;AACD,CARD;AAUA;AACA;AACA;AACA;AACA;;;AACA,IAAMW,QAAQ,GAAG,SAAXA,QAAW,CAACf,KAAD,EAAW;AAC1B,MAAI;AACF,WAAOc,cAAc,CAACd,KAAD,CAArB;AACD,GAFD,CAEE,OAAOgB,KAAP,EAAc;AACd,WAAO,KAAP;AACD;AACF,CAND;;AAQAC,MAAM,CAACC,OAAP,GAAiB;AACfnB,EAAAA,EAAE,EAAFA,EADe;AAEfY,EAAAA,IAAI,EAAJA,IAFe;AAGfD,EAAAA,IAAI,EAAJA,IAHe;AAIfK,EAAAA,QAAQ,EAARA,QAJe;AAKfD,EAAAA,cAAc,EAAdA;AALe,CAAjB","sourcesContent":["/**\n * isCNPJ()\n * Calcula se um CNPJ é válido\n *\n * @doc\n * - CNPJ deve possuir 14 dígitos no formato 00.000.000/0000-00\n *\n * - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal\n *\n * - Os caracteres 9 a 12 são a identificação das filiais da empresa.\n *\n * - Os caracteres 13 e 14 são os dígitos verificadores\n *\n * 1) Partes do número\n * _______________________________ _______________ _______\n * | Número | Filiais | DV |\n * | 1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - X Y |\n * |_______________________________|_______________|_______|\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 12 pelos números 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 1 1 2 2 2 3 3 3 0 0 0 1\n * x x x x x x x x x x x x\n * 5 4 3 2 9 8 7 6 5 4 3 2\n * = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.\n * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.\n *\n * 3) Cálculo do segundo DV.\n *\n * - Soma-se o produto das algarismos 1 a 13 (incluindo o DV1 calculado) pelos\n * números 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.\n *\n * 1 1 2 2 2 3 3 3 0 0 0 1 8\n * x x x x x x x x x x x x x\n * 6 5 4 3 2 9 8 7 6 5 4 3 2\n * = 6 +5 +8 +6 +4 +27 +24 +21 +0 +0 +0 +3 +16 = 120\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 120 / 11 tem resto 10. 11 - 10 = 1. DV2 é 1.\n * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.\n *\n * Fonte: http://www.macoratti.net/alg_cnpj.htm\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\n\nconst {\n invalidListGenerator, sumElementsByMultipliers, sumToDV,\n clearValue, fakeNumber, applyMask,\n} = require('../lib/utils');\n\nconst dv = (value = '') => {\n const cnpj = clearValue(value, 12);\n\n const blackList = invalidListGenerator(12);\n if (blackList.includes(cnpj)) {\n throw new Error('CNPJ é obrigatório');\n }\n\n const sum1 = sumElementsByMultipliers(cnpj.substring(0, 12), '543298765432');\n const dv1 = sumToDV(sum1);\n\n const sum2 = sumElementsByMultipliers(cnpj.substring(0, 12) + dv1, '6543298765432');\n const dv2 = sumToDV(sum2);\n\n return `${dv1}${dv2}`;\n};\n\n/**\n * Aplica uma máscara ao número informado\n *\n * @param {String} value Número de Processo\n * @returns {String} Valor com a máscara\n */\nconst mask = (value) => applyMask(value, '00.000.000/0000-00');\n\n/**\n *\n *\n */\nconst fake = (withMask = false) => {\n const num = fakeNumber(12, true);\n\n const cnpj = `${num}${dv(num)}`;\n\n if (withMask) return mask(cnpj);\n return cnpj;\n};\n\n/**\n * validate()\n * Valida se um número de processo está correto\n *\n */\nconst validateOrFail = (value) => {\n const cnpj = clearValue(value, 14);\n\n if (dv(cnpj) !== cnpj.substring(12, 14)) {\n throw new Error('Dígito verificador inválido');\n }\n\n return true;\n};\n\n/**\n * validate()\n * Valida se um número de processo está correto\n *\n */\nconst validate = (value) => {\n try {\n return validateOrFail(value);\n } catch (error) {\n return false;\n }\n};\n\nmodule.exports = {\n dv,\n fake,\n mask,\n validate,\n validateOrFail,\n};\n"],"file":"cnpj.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/documents/cpf.js"],"names":["require","invalidListGenerator","sumElementsByMultipliers","sumToDV","clearValue","fakeNumber","applyMask","dv","value","Error","cpf","invalidList","includes","sum1","dv1","sum2","dv2","mask","fake","withMask","num","validateOrFail","substring","validate","error","module","exports"],"mappings":"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","sourcesContent":["/**\n * isCPF()\n * Calcula se um CPF é válido\n *\n * @doc\n * CPF deve possuir 11 dígitos.\n *\n * - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal\n *\n * - O caractere 9 refere-se à região fiscal emissora do documento\n * 1 – DF, GO, MS, MT e TO\n * 2 – AC, AM, AP, PA, RO e RR\n * 3 – CE, MA e PI\n * 4 – AL, PB, PE, RN\n * 5 – BA e SE\n * 6 – MG\n * 7 – ES e RJ\n * 8 – SP\n * 9 – PR e SC\n * 0 – RS\n *\n * - Os caracteres 10 e 11 são dígitos verificadores.\n *\n * 1) Partes do número\n * ------------------------------------------------\n * | Número | R | DV |\n * 2 8 0 . 0 1 2 . 3 8 9 - 3 8\n *\n * 2) Cálculo do primeiro DV.\n *\n * - Soma-se o produto das algarismos 1 a 9 pelos números 10, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 2 8 0 0 1 2 3 8 9\n * x x x x x x x x x\n * 10 9 8 7 6 5 4 3 2\n * = 20 +72 +0 +0 +6 +10 +12 +24 +18 = 162\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 162 / 11 tem resto 8. 11 - 8 = 3. DV1 é 3.\n * Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.\n *\n * 3) Cálculo do segundo DV.\n *\n * - Soma-se o produto das algarismos 1 a 10 pelos números 11, 10, 9, 8, 7, 6, 5, 4, 3, 2\n *\n * 2 8 0 0 1 2 3 8 9 3\n * x x x x x x x x x x\n * 11 10 9 8 7 6 5 4 3 2\n * = 22 +80 +0 +0 +7 +12 +15 +32 +27 = 201\n *\n * - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11\n * 201 / 11 tem resto 3. 11 - 3 = 8. DV2 é 8.\n * Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.\n *\n * Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/\n *\n * @param {String} value Título eleitoral\n * @returns {Boolean}\n */\n\nconst {\n invalidListGenerator, sumElementsByMultipliers, sumToDV,\n clearValue, fakeNumber, applyMask,\n} = require('../lib/utils');\n\n/**\n * dv()\n * Calcula o dígito verificador de um CPF\n *\n * @param {Number|String} value\n * @returns {String}\n */\nconst dv = (value = '') => {\n if (!value) throw new Error('CPF não informado');\n\n const cpf = clearValue(value, 9);\n\n const invalidList = invalidListGenerator(9);\n if (invalidList.includes(cpf)) {\n throw new Error('CPF não pode ser uma sequência de números iguais');\n }\n\n const sum1 = sumElementsByMultipliers(cpf, [10, 9, 8, 7, 6, 5, 4, 3, 2]);\n const dv1 = sumToDV(sum1);\n\n const sum2 = sumElementsByMultipliers(cpf + dv1, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);\n const dv2 = sumToDV(sum2);\n\n return `${dv1}${dv2}`;\n};\n\n/**\n * Aplica uma máscara ao número informado\n *\n * @param {String} value Número de Processo\n * @returns {String} Valor com a máscara\n */\nconst mask = (value) => applyMask(value, '000.000.000-00');\n\n/**\n * fake()\n * Gera um número válido\n *\n * @returns {String}\n */\nconst fake = (withMask = false) => {\n const num = fakeNumber(9, true);\n\n const cpf = `${num}${dv(num)}`;\n\n if (withMask) return mask(cpf);\n return cpf;\n};\n\n/**\n * validateOrFail()\n * Valida se um número de processo está correto e\n * retorna uma exceção se não estiver\n *\n * @returns {Boolean}\n */\nconst validateOrFail = (value) => {\n const cpf = clearValue(value, 11);\n\n if (dv(cpf) !== cpf.substring(9, 11)) {\n throw new Error('Dígito verificador inválido');\n }\n\n return true;\n};\n\n/**\n * validate()\n * Valida se um número de processo está correto\n *\n * @returns {Boolean}\n */\nconst validate = (value) => {\n try {\n return validateOrFail(value);\n } catch (error) {\n return false;\n }\n};\n\nmodule.exports = {\n dv,\n fake,\n mask,\n validate,\n validateOrFail,\n};\n"],"file":"cpf.js"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- var isCNH = require('./cnh').validate;
4
-
5
- var isCNPJ = require('./cnpj').validate;
6
-
7
- var isCPF = require('./cpf').validate;
8
-
9
- var isJudicialProcess = require('./judicial-process').validate;
10
-
11
- var isPIS = require('./pis-pasep').validate;
12
-
13
- var isPostalCode = require('./postal-code').validate;
14
-
15
- var isRenavam = require('./renavam').validate;
16
-
17
- var isTitulo = require('./titulo-eleitor').validate;
18
-
19
- module.exports = {
20
- isCNH: isCNH,
21
- isCNPJ: isCNPJ,
22
- isCPF: isCPF,
23
- isJudicialProcess: isJudicialProcess,
24
- isPIS: isPIS,
25
- isPostalCode: isPostalCode,
26
- isRenavam: isRenavam,
27
- isTitulo: isTitulo
28
- };
29
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/documents/index.js"],"names":["isCNH","require","validate","isCNPJ","isCPF","isJudicialProcess","isPIS","isPostalCode","isRenavam","isTitulo","module","exports"],"mappings":";;AAAA,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAAP,CAAiBC,QAA/B;;AACA,IAAMC,MAAM,GAAGF,OAAO,CAAC,QAAD,CAAP,CAAkBC,QAAjC;;AACA,IAAME,KAAK,GAAGH,OAAO,CAAC,OAAD,CAAP,CAAiBC,QAA/B;;AACA,IAAMG,iBAAiB,GAAGJ,OAAO,CAAC,oBAAD,CAAP,CAA8BC,QAAxD;;AACA,IAAMI,KAAK,GAAGL,OAAO,CAAC,aAAD,CAAP,CAAuBC,QAArC;;AACA,IAAMK,YAAY,GAAGN,OAAO,CAAC,eAAD,CAAP,CAAyBC,QAA9C;;AACA,IAAMM,SAAS,GAAGP,OAAO,CAAC,WAAD,CAAP,CAAqBC,QAAvC;;AACA,IAAMO,QAAQ,GAAGR,OAAO,CAAC,kBAAD,CAAP,CAA4BC,QAA7C;;AAEAQ,MAAM,CAACC,OAAP,GAAiB;AACfX,EAAAA,KAAK,EAALA,KADe;AAEfG,EAAAA,MAAM,EAANA,MAFe;AAGfC,EAAAA,KAAK,EAALA,KAHe;AAIfC,EAAAA,iBAAiB,EAAjBA,iBAJe;AAKfC,EAAAA,KAAK,EAALA,KALe;AAMfC,EAAAA,YAAY,EAAZA,YANe;AAOfC,EAAAA,SAAS,EAATA,SAPe;AAQfC,EAAAA,QAAQ,EAARA;AARe,CAAjB","sourcesContent":["const isCNH = require('./cnh').validate;\nconst isCNPJ = require('./cnpj').validate;\nconst isCPF = require('./cpf').validate;\nconst isJudicialProcess = require('./judicial-process').validate;\nconst isPIS = require('./pis-pasep').validate;\nconst isPostalCode = require('./postal-code').validate;\nconst isRenavam = require('./renavam').validate;\nconst isTitulo = require('./titulo-eleitor').validate;\n\nmodule.exports = {\n isCNH,\n isCNPJ,\n isCPF,\n isJudicialProcess,\n isPIS,\n isPostalCode,\n isRenavam,\n isTitulo,\n};\n"],"file":"index.js"}