validation-br 0.8.2 → 0.21.3
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.
- package/LICENSE +21 -0
- package/dist/documents/cnh.js +89 -12
- package/dist/documents/cnh.js.map +1 -1
- package/dist/documents/cnpj.js +78 -14
- package/dist/documents/cnpj.js.map +1 -1
- package/dist/documents/cpf.js +91 -13
- package/dist/documents/cpf.js.map +1 -1
- package/dist/documents/index.js +16 -10
- package/dist/documents/index.js.map +1 -1
- package/dist/documents/judicial-process.js +177 -0
- package/dist/documents/judicial-process.js.map +1 -0
- package/dist/documents/pis-pasep.js +93 -24
- package/dist/documents/pis-pasep.js.map +1 -1
- package/dist/documents/postal-code.js +91 -12
- package/dist/documents/postal-code.js.map +1 -1
- package/dist/documents/renavam.js +97 -0
- package/dist/documents/renavam.js.map +1 -0
- package/dist/documents/titulo-eleitor.js +91 -10
- package/dist/documents/titulo-eleitor.js.map +1 -1
- package/dist/lib/utils.js +123 -7
- package/dist/lib/utils.js.map +1 -1
- package/index.js +2 -2
- package/package.json +48 -8
- package/readme.md +239 -86
- package/src/documents/cnh.js +0 -73
- package/src/documents/cnpj.js +0 -71
- package/src/documents/cpf.js +0 -80
- package/src/documents/index.js +0 -15
- package/src/documents/pis-pasep.js +0 -69
- package/src/documents/postal-code.js +0 -64
- package/src/documents/titulo-eleitor.js +0 -73
- package/src/lib/utils.js +0 -41
- package/tests/index.js +0 -13
- package/tests/invalid-list-generator.test.js +0 -25
- package/tests/is-cnh.test.js +0 -42
- package/tests/is-cnpj.test.js +0 -46
- package/tests/is-cpf.test.js +0 -41
- package/tests/is-pis.test.js +0 -41
- package/tests/is-postal-code.test.js +0 -48
- package/tests/is-renavam.test.js +0 -34
- package/tests/is-titulo.test.js +0 -42
- package/tests/sum-elements-by-multipliers.test.js +0 -35
- package/tests/sum-to-dv.test.js +0 -17
package/readme.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
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, e Objetos registrados de
|
|
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.
|
|
4
4
|
|
|
5
|
-
|
|
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.
|
|
8
|
+
|
|
9
|
+
# Instalação
|
|
6
10
|
|
|
7
11
|
```sh
|
|
8
12
|
# Usando yarn
|
|
@@ -14,174 +18,323 @@ npm install validation-br
|
|
|
14
18
|
|
|
15
19
|
```
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
# Importação
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
## Importação direta
|
|
24
|
+
|
|
25
|
+
Permite realizar diretamente uma validação a partir do objeto principal
|
|
20
26
|
|
|
27
|
+
```js
|
|
21
28
|
// Modules
|
|
22
29
|
const { isCPF, isCNPJ } = require('validation-br');
|
|
23
30
|
|
|
24
31
|
// ES6
|
|
25
|
-
import { isCPF, isCNPJ } from
|
|
32
|
+
import { isCPF, isCNPJ } from 'validation-br';
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Importação de submódulos
|
|
36
|
+
|
|
37
|
+
Importando os submódulos, é possível criar máscaras, números fake para testes de desenvolvimento e calcular dígitos verificadores.
|
|
38
|
+
|
|
39
|
+
### Exemplos
|
|
40
|
+
|
|
41
|
+
```js
|
|
42
|
+
// ES6
|
|
43
|
+
import { dv, fake, mask, validate } from 'validation-br/cpf';
|
|
44
|
+
|
|
45
|
+
// Modules
|
|
46
|
+
const cpf = require('validation-br/cpf');
|
|
47
|
+
const { dv, fake, mask, validate } = require('validation-br/cpf');
|
|
48
|
+
|
|
49
|
+
// 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'
|
|
26
53
|
|
|
54
|
+
// Cria um número fake de CPF para fins de testes.
|
|
55
|
+
cpf.fake(); // -> 90625966651
|
|
56
|
+
// Passe um parâmetro true para gerar o número com máscara
|
|
57
|
+
cpf.fake(true); // -> 906.259.666-51
|
|
27
58
|
|
|
59
|
+
// Aplique uma máscara a um cpf
|
|
60
|
+
cpf.mask(90625966651); // -> 906.259.666-51
|
|
61
|
+
|
|
62
|
+
// Valida um número
|
|
63
|
+
cpf.validate('01234567890'); // -> true
|
|
64
|
+
|
|
65
|
+
// Valida um número e retorna exceção se a validação falhar
|
|
66
|
+
cpf.validateOrFail('01234567890'); // -> true
|
|
28
67
|
```
|
|
29
68
|
|
|
30
69
|
## Tabela de Conteúdo
|
|
31
70
|
|
|
32
|
-
- [
|
|
33
|
-
- [
|
|
34
|
-
- [
|
|
35
|
-
- [
|
|
36
|
-
- [
|
|
37
|
-
- [isPIS](#isPIS) - Validação de PIS, PASEP, NIS e NIT
|
|
71
|
+
- [isCNH](#isCNH-value-) - Validação do CNH
|
|
72
|
+
- [isCPF](#isCPF-value-) - Validação do CPF
|
|
73
|
+
- [isCNPJ](#isCNPJ-value-) - Validação do CNPJ
|
|
74
|
+
- [isPostalCode](#isPostalCode-value-) - Validação de Objetos Registrados dos Correios
|
|
75
|
+
- [isJudicialProcess](#isJudicialProcess-value-) - Validação de Números de Processos Judiciais
|
|
76
|
+
- [isPIS](#isPIS-value-) - Validação de PIS, PASEP, NIS e NIT
|
|
77
|
+
- [isPostalCode](#isPostalCode-value-) - Validação de Objetos Registrados dos Correios
|
|
78
|
+
- [isRenavam](#isRenavam-value-) - Validação de RENAVAM
|
|
79
|
+
- [isTitulo](#isTitulo-value-) - Validação do Título de Eleitor
|
|
38
80
|
|
|
39
|
-
###
|
|
81
|
+
### isCNH( `value` )
|
|
40
82
|
|
|
41
|
-
Valida
|
|
83
|
+
Valida o documento da carteira nacional de habilitação.
|
|
42
84
|
|
|
43
85
|
```js
|
|
44
|
-
// Importação
|
|
45
|
-
import {
|
|
86
|
+
// Importação somente da validação
|
|
87
|
+
import { isCNH } from 'validation-br';
|
|
88
|
+
// ou
|
|
89
|
+
// Importação do submódulo
|
|
90
|
+
import cnh from 'validation-br/cnh';
|
|
46
91
|
|
|
47
92
|
// Valida
|
|
48
|
-
|
|
49
|
-
//-> true
|
|
93
|
+
isCNH('69044271146'); //-> true
|
|
94
|
+
isCNH('62472927637'); //-> true
|
|
95
|
+
isCNH('46190476839'); //-> false
|
|
96
|
+
cnh.validate('62472927637'); //-> true
|
|
97
|
+
cnh.validateOrFail('62472927637'); //-> true
|
|
50
98
|
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
99
|
+
// Número fake com e sem máscara
|
|
100
|
+
cnh.fake(); // -> 62472927637
|
|
101
|
+
cnh.fake(true); // -> 624729276-37
|
|
54
102
|
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
103
|
+
// Aplica uma máscara
|
|
104
|
+
cnh.mask('62472927637'); // -> 624729276-37
|
|
105
|
+
|
|
106
|
+
// Calcula o DV
|
|
107
|
+
cnh.dv('624729276'); // -> '37'
|
|
58
108
|
```
|
|
59
109
|
|
|
60
|
-
### isCNPJ
|
|
110
|
+
### isCNPJ( `value` )
|
|
61
111
|
|
|
62
112
|
Valida um CNPJ
|
|
63
113
|
|
|
64
114
|
```js
|
|
65
|
-
// Importação
|
|
66
|
-
import { isCNPJ } from
|
|
115
|
+
// Importação somente da validação
|
|
116
|
+
import { isCNPJ } from 'validation-br';
|
|
117
|
+
// ou
|
|
118
|
+
// Importação do submódulo
|
|
119
|
+
import cnpj from 'validation-br/cnpj';
|
|
67
120
|
|
|
68
121
|
// Valida
|
|
69
|
-
isCNPJ('73.797.980/0001-79')
|
|
70
|
-
//-> true
|
|
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
|
|
71
127
|
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
128
|
+
// Número fake com e sem máscara
|
|
129
|
+
cnpj.fake(); // -> 55585709000198
|
|
130
|
+
cnpj.fake(true); // -> 55.585.709/0001-98
|
|
75
131
|
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
132
|
+
// Aplica uma máscara
|
|
133
|
+
cnpj.mask('99362238000180'); // -> 99.362.238/0001-80
|
|
134
|
+
|
|
135
|
+
// Calcula o DV
|
|
136
|
+
cnpj.dv('993622380001'); // -> '80'
|
|
79
137
|
```
|
|
80
138
|
|
|
81
|
-
###
|
|
139
|
+
### isCPF( `value` )
|
|
82
140
|
|
|
83
|
-
Valida um
|
|
141
|
+
Valida um CPF
|
|
84
142
|
|
|
85
143
|
```js
|
|
86
|
-
// Importação
|
|
87
|
-
import {
|
|
144
|
+
// Importação somente da validação
|
|
145
|
+
import { isCPF } from 'validation-br';
|
|
146
|
+
// ou
|
|
147
|
+
// Importação do submódulo
|
|
148
|
+
import cpf from 'validation-br/cpf';
|
|
88
149
|
|
|
89
150
|
// Valida
|
|
90
|
-
|
|
91
|
-
//-> true
|
|
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
|
|
92
156
|
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
157
|
+
// Número fake com e sem máscara
|
|
158
|
+
cpf.fake(); // -> 01234567891
|
|
159
|
+
cpf.fake(true); // -> 012.345.678-91
|
|
96
160
|
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
161
|
+
// Aplica uma máscara
|
|
162
|
+
cpf.mask('01234567890'); // -> 012.345.678-90
|
|
163
|
+
|
|
164
|
+
// Calcula o DV
|
|
165
|
+
cpf.dv('012345678'); // -> '90'
|
|
100
166
|
```
|
|
101
167
|
|
|
102
|
-
###
|
|
168
|
+
### isJudicialProcess( `value` )
|
|
103
169
|
|
|
104
|
-
Valida o
|
|
170
|
+
Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita números com e sem pontos e traços.
|
|
105
171
|
|
|
106
172
|
```js
|
|
107
|
-
// Importação
|
|
108
|
-
import {
|
|
173
|
+
// Importação somente da validação
|
|
174
|
+
import { isJudicialProcess } from 'validation-br';
|
|
175
|
+
// ou
|
|
176
|
+
// Importação do submódulo
|
|
177
|
+
import judicialProcess from 'validation-br/judicial-process';
|
|
109
178
|
|
|
110
179
|
// Valida
|
|
111
|
-
|
|
112
|
-
//-> true
|
|
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
|
|
113
185
|
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
186
|
+
// Número fake com e sem máscara
|
|
187
|
+
judicialProcess.fake(); // -> 71282677380
|
|
188
|
+
judicialProcess.fake(true); // -> 712.82677.38-0
|
|
189
|
+
|
|
190
|
+
// Aplica uma máscara
|
|
191
|
+
judicialProcess.mask('71282677380'); // -> 712.82677.38-0
|
|
192
|
+
|
|
193
|
+
// Calcula o DV
|
|
194
|
+
judicialProcess.dv('7128267738'); // -> '0'
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### isPIS( `value` )
|
|
198
|
+
|
|
199
|
+
Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita números com e sem pontos e traços.
|
|
200
|
+
|
|
201
|
+
```js
|
|
202
|
+
// Importação somente da validação
|
|
203
|
+
import { isPIS } from 'validation-br';
|
|
204
|
+
// ou
|
|
205
|
+
// Importação do submódulo
|
|
206
|
+
import pis from 'validation-br/pis';
|
|
117
207
|
|
|
118
208
|
// Valida
|
|
119
|
-
|
|
120
|
-
//->
|
|
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
|
|
214
|
+
|
|
215
|
+
// Número fake com e sem máscara
|
|
216
|
+
pis.fake(); // -> 71282677380
|
|
217
|
+
pis.fake(true); // -> 712.82677.38-0
|
|
218
|
+
|
|
219
|
+
// Aplica uma máscara
|
|
220
|
+
pis.mask('71282677380'); // -> 712.82677.38-0
|
|
221
|
+
|
|
222
|
+
// Calcula o DV
|
|
223
|
+
pis.dv('7128267738'); // -> '0'
|
|
121
224
|
```
|
|
122
225
|
|
|
123
|
-
### isPostalCode
|
|
226
|
+
### isPostalCode( `value` )
|
|
124
227
|
|
|
125
|
-
Valida um código de rastreamento de objetos postais no formato
|
|
228
|
+
Valida um código de rastreamento de objetos postais no formato XX00000000DYY, onde:
|
|
126
229
|
|
|
127
230
|
- XX: O código do objeto postal com 2 dígitos;
|
|
128
|
-
-
|
|
231
|
+
- 00000000: Número sequencial do objeto com 8 dígitos;
|
|
232
|
+
- D: Dígito Verificador
|
|
129
233
|
- YY: País de origem do objeto com 2 dígitos.
|
|
130
234
|
|
|
131
235
|
```js
|
|
132
|
-
// Importação
|
|
133
|
-
import { isPostalCode } from
|
|
236
|
+
// Importação somente da validação
|
|
237
|
+
import { isPostalCode } from 'validation-br';
|
|
238
|
+
// ou
|
|
239
|
+
// Importação do submódulo
|
|
240
|
+
import postalCode from 'validation-br/postal-code';
|
|
134
241
|
|
|
135
242
|
// Valida
|
|
136
|
-
isPostalCode('PN718252423BR')
|
|
137
|
-
//-> true
|
|
243
|
+
isPostalCode('PN718252423BR'); //-> true
|
|
244
|
+
isPostalCode('RY728187035CN'); //-> true
|
|
245
|
+
isPostalCode('JT194624698BR'); //-> false
|
|
246
|
+
postalCode.validate('PN718252423BR'); //-> true
|
|
247
|
+
postalCode.validateOrFail('PN718252423BR'); //-> true
|
|
248
|
+
|
|
249
|
+
// Número fake com e sem máscara.
|
|
250
|
+
postalCode.fake(); // -> PN718252423BR
|
|
251
|
+
postalCode.fake(true); // -> PN718252423BR
|
|
252
|
+
|
|
253
|
+
// Aplica uma máscara
|
|
254
|
+
// No caso de PostalCode, a máscara apenas coloca as letras em maiúsculas
|
|
255
|
+
postalCode.mask('pn718252423br'); // -> PN718252423BR
|
|
256
|
+
|
|
257
|
+
// Calcula o DV
|
|
258
|
+
postalCode.dv('PN718252423BR'); // -> '3'
|
|
259
|
+
```
|
|
138
260
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
261
|
+
### isRenavam( `value` )
|
|
262
|
+
|
|
263
|
+
Valida o número de um RENAVAM de 11 dígitos
|
|
264
|
+
|
|
265
|
+
```js
|
|
266
|
+
// Importação somente da validação
|
|
267
|
+
import { isRenavam } from 'validation-br';
|
|
268
|
+
// ou
|
|
269
|
+
// Importação do submódulo
|
|
270
|
+
import renavam from 'validation-br/renavam';
|
|
142
271
|
|
|
143
272
|
// Valida
|
|
144
|
-
|
|
145
|
-
//->
|
|
273
|
+
isRenavam('14283256656'); //-> true
|
|
274
|
+
isRenavam('95059845976'); //-> true
|
|
275
|
+
isRenavam('67747331626'); //-> false
|
|
276
|
+
renavam.validate('95059845976'); //-> true
|
|
277
|
+
renavam.validateOrFail('95059845976'); //-> true
|
|
278
|
+
|
|
279
|
+
// Número fake com e sem máscara
|
|
280
|
+
renavam.fake(); // -> 95059845976
|
|
281
|
+
renavam.fake(true); // -> 9505984597-6
|
|
282
|
+
|
|
283
|
+
// Aplica uma máscara
|
|
284
|
+
renavam.mask('95059845976'); // -> 9505984597-6
|
|
285
|
+
|
|
286
|
+
// Calcula o DV
|
|
287
|
+
renavam.dv('950598459'); // -> '76'
|
|
146
288
|
```
|
|
147
289
|
|
|
148
|
-
###
|
|
290
|
+
### isTitulo( `value` )
|
|
149
291
|
|
|
150
|
-
Valida
|
|
292
|
+
Valida um título eleitoral
|
|
151
293
|
|
|
152
294
|
```js
|
|
153
|
-
// Importação
|
|
154
|
-
import {
|
|
295
|
+
// Importação somente da validação
|
|
296
|
+
import { isTitulo } from 'validation-br';
|
|
297
|
+
// ou
|
|
298
|
+
// Importação do submódulo
|
|
299
|
+
import titulo from 'validation-br/titulo';
|
|
155
300
|
|
|
156
301
|
// Valida
|
|
157
|
-
|
|
158
|
-
//-> true
|
|
302
|
+
isTitulo('743650641660'); //-> true
|
|
303
|
+
isTitulo('525028881694'); //-> true
|
|
304
|
+
isTitulo('153016161686'); //-> false
|
|
305
|
+
titulo.validate('01234567890'); //-> true
|
|
306
|
+
titulo.validateOrFail('01234567890'); //-> true
|
|
159
307
|
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
308
|
+
// Número fake com e sem máscara
|
|
309
|
+
titulo.fake(); // -> 153016161686
|
|
310
|
+
titulo.fake(true); // -> 1530.1616.1686
|
|
163
311
|
|
|
164
|
-
//
|
|
165
|
-
|
|
166
|
-
//-> false
|
|
167
|
-
```
|
|
312
|
+
// Aplica uma máscara
|
|
313
|
+
titulo.mask('525028881694'); // -> 5250.2888.1694
|
|
168
314
|
|
|
169
|
-
|
|
170
|
-
|
|
315
|
+
// Calcula o DV
|
|
316
|
+
titulo.dv('5250288816'); // -> '94'
|
|
317
|
+
```
|
|
171
318
|
|
|
319
|
+
# Tests
|
|
172
320
|
|
|
321
|
+

|
|
173
322
|
|
|
174
|
-
|
|
323
|
+
# Changelog
|
|
175
324
|
|
|
325
|
+
- **08/01/2022**:
|
|
326
|
+
- 0.21.1 - Adicionadas as funções isRenavam e isJudicialProcess
|
|
176
327
|
- **16/09/2021**:
|
|
177
328
|
- 0.5.0 - Adicionadas as funções isCPF, isCNPJ e isTitulo
|
|
178
329
|
- 0.7.0 - Adicionadas as funções isPostalCode e isCNH
|
|
179
330
|
- 0.8.0 - Adicionada a função isPIS
|
|
180
331
|
|
|
181
|
-
|
|
332
|
+
# Referências
|
|
182
333
|
|
|
183
334
|
- [Cálculo do DV do CPF](http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/)
|
|
184
335
|
- [Cálculo do DV do CNPJ](http://www.macoratti.net/alg_cnpj.htm)
|
|
185
336
|
- [Cálculo do DV do Título Eleitoral](http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/)
|
|
186
337
|
- [Cálculo do PIS](http://www.macoratti.net/alg_pis.htm)
|
|
187
338
|
- [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
|
+
- [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
|
+
- [Cálculos de DV](http://ghiorzi.org/DVnew.htm)
|
package/src/documents/cnh.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
const { sumElementsByMultipliers, sumToDV, invalidListGenerator } = require('../lib/utils');
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* isCNH()
|
|
5
|
-
* Calcula se uma CNH é válida
|
|
6
|
-
*
|
|
7
|
-
* @doc
|
|
8
|
-
* CNH deve possuir 11 caracteres
|
|
9
|
-
*
|
|
10
|
-
* - Os caracteres 1 a 9 são números sequenciais.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* - Os caracteres 10 e 11 são dígitos verificadores.
|
|
14
|
-
*
|
|
15
|
-
* 1) Partes do número
|
|
16
|
-
* ____________________________ ______
|
|
17
|
-
* | Número | D V |
|
|
18
|
-
* | 5 8 3 1 6 7 9 4 5 3 4 |
|
|
19
|
-
* |____________________________|_____|
|
|
20
|
-
*
|
|
21
|
-
* 2) Cálculo do primeiro DV.
|
|
22
|
-
*
|
|
23
|
-
* - Soma-se o produto das algarismos 1 a 9 pelos números 2, 3, 4, 5, 6, 7, 8, 9, 10.
|
|
24
|
-
*
|
|
25
|
-
* 5 8 3 1 6 7 9 4 5
|
|
26
|
-
* x x x x x x x x x
|
|
27
|
-
* 2 3 4 5 6 7 8 9 10
|
|
28
|
-
* = 10 +24 +12 +5 +36 +49 +72 +36 +50 = 294
|
|
29
|
-
*
|
|
30
|
-
* - O somatório encontrado é dividido por 11. O DV1 é 11 subtraído do resto da divisão. Se o
|
|
31
|
-
* resto for 10, o DV1 é 0.
|
|
32
|
-
*
|
|
33
|
-
* 2.1) 294 / 11 tem resto igual a 8. 11-7 = 3
|
|
34
|
-
* DV1 = 3
|
|
35
|
-
*
|
|
36
|
-
* 3) Cálculo do segundo DV
|
|
37
|
-
*
|
|
38
|
-
* - Soma-se o produto das algarismos 1 a 9 juntamente com o 10 caractere
|
|
39
|
-
* que é o DV1, pelos números 3, 4, 5, 6, 7, 8, 9, 10, 11, 2. O DV1 será
|
|
40
|
-
* multiplicado por 2 e ficará no final.
|
|
41
|
-
*
|
|
42
|
-
* 5 8 3 1 6 7 9 4 5 3
|
|
43
|
-
* x x x x x x x x x x
|
|
44
|
-
* 3 4 5 6 7 8 9 10 11 2
|
|
45
|
-
* = 10 +24 +12 +5 +36 +49 +72 +36 +50 +6 = 348
|
|
46
|
-
*
|
|
47
|
-
* 3.1) 348 / 11 tem resto igual a 7. 11 - 7 = 4.
|
|
48
|
-
* DV2 = 4
|
|
49
|
-
*
|
|
50
|
-
* - O somatório encontrado é dividido por 11. O DV2 é 11 subtraído do resto da divisão. Se o
|
|
51
|
-
* resto for 10, o DV2 é 0.
|
|
52
|
-
*
|
|
53
|
-
* Fonte: https://www.devmedia.com.br/forum/validacao-de-cnh/372972
|
|
54
|
-
*
|
|
55
|
-
* @param {String} value Título eleitoral
|
|
56
|
-
* @returns {Boolean}
|
|
57
|
-
*/
|
|
58
|
-
const isCNH = (value = '') => {
|
|
59
|
-
const cnh = value.replace(/[^\d]+/g, '');
|
|
60
|
-
|
|
61
|
-
const invalidList = invalidListGenerator(11);
|
|
62
|
-
if (!cnh || invalidList.includes(cnh) || cnh.length !== 11) return false;
|
|
63
|
-
|
|
64
|
-
const sum1 = sumElementsByMultipliers(cnh.substr(0, 9), [2, 3, 4, 5, 6, 7, 8, 9, 10]);
|
|
65
|
-
const sum2 = sumElementsByMultipliers(cnh.substr(0, 10), [3, 4, 5, 6, 7, 8, 9, 10, 11, 2]);
|
|
66
|
-
|
|
67
|
-
const dv1 = sumToDV(sum1);
|
|
68
|
-
const dv2 = sumToDV(sum2);
|
|
69
|
-
|
|
70
|
-
return `${dv1}${dv2}` === cnh.substr(9, 2);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
module.exports = isCNH;
|
package/src/documents/cnpj.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
const { invalidListGenerator, sumElementsByMultipliers, sumToDV } = require('../lib/utils');
|
|
2
|
-
/**
|
|
3
|
-
* isCNPJ()
|
|
4
|
-
* Calcula se um CNPJ é válido
|
|
5
|
-
*
|
|
6
|
-
* @doc
|
|
7
|
-
* - CNPJ deve possuir 14 dígitos no formato 00.000.000/0000-00
|
|
8
|
-
*
|
|
9
|
-
* - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
|
|
10
|
-
*
|
|
11
|
-
* - Os caracteres 9 a 12 são a identificação das filiais da empresa.
|
|
12
|
-
*
|
|
13
|
-
* - Os caracteres 13 e 14 são os dígitos verificadores
|
|
14
|
-
*
|
|
15
|
-
* 1) Partes do número
|
|
16
|
-
* _______________________________ _______________ _______
|
|
17
|
-
* | Número | Filiais | DV |
|
|
18
|
-
* | 1 1 . 2 2 2 . 3 3 3 / 0 0 0 1 - X Y |
|
|
19
|
-
* |_______________________________|_______________|_______|
|
|
20
|
-
*
|
|
21
|
-
* 2) Cálculo do primeiro DV.
|
|
22
|
-
*
|
|
23
|
-
* - Soma-se o produto das algarismos 1 a 12 pelos números 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
|
|
24
|
-
*
|
|
25
|
-
* 1 1 2 2 2 3 3 3 0 0 0 1
|
|
26
|
-
* x x x x x x x x x x x x
|
|
27
|
-
* 5 4 3 2 9 8 7 6 5 4 3 2
|
|
28
|
-
* = 5 +4 +6 +4 +18 +24 +21 +18 +0 +0 +0 +2 = 102
|
|
29
|
-
*
|
|
30
|
-
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
31
|
-
* 102 / 11 tem resto 8. 11 - 3 = 8. DV1 é 8.
|
|
32
|
-
* Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
|
|
33
|
-
*
|
|
34
|
-
* 3) Cálculo do segundo DV.
|
|
35
|
-
*
|
|
36
|
-
* - Soma-se o produto das algarismos 1 a 13 (incluindo o DV1 calculado) pelos
|
|
37
|
-
* números 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
|
|
38
|
-
*
|
|
39
|
-
* 1 1 2 2 2 3 3 3 0 0 0 1 8
|
|
40
|
-
* x x x x x x x x x x x x x
|
|
41
|
-
* 6 5 4 3 2 9 8 7 6 5 4 3 2
|
|
42
|
-
* = 6 +5 +8 +6 +4 +27 +24 +21 +0 +0 +0 +3 +16 = 120
|
|
43
|
-
*
|
|
44
|
-
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
45
|
-
* 120 / 11 tem resto 10. 11 - 10 = 1. DV2 é 1.
|
|
46
|
-
* Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
|
|
47
|
-
*
|
|
48
|
-
* Fonte: http://www.macoratti.net/alg_cnpj.htm
|
|
49
|
-
*
|
|
50
|
-
* @param {String} value Título eleitoral
|
|
51
|
-
* @returns {Boolean}
|
|
52
|
-
*/
|
|
53
|
-
const isCNPJ = (value = '') => {
|
|
54
|
-
const cnpj = value.replace(/[^\d]+/g, '');
|
|
55
|
-
|
|
56
|
-
const blackList = invalidListGenerator(14);
|
|
57
|
-
if (!cnpj || cnpj.length !== 14 || blackList.includes(cnpj)) return false;
|
|
58
|
-
|
|
59
|
-
const sum1 = sumElementsByMultipliers(cnpj.substr(0, 12), '543298765432');
|
|
60
|
-
const sum2 = sumElementsByMultipliers(cnpj.substr(0, 13), '6543298765432');
|
|
61
|
-
|
|
62
|
-
const dv1 = sumToDV(sum1);
|
|
63
|
-
const dv2 = sumToDV(sum2);
|
|
64
|
-
|
|
65
|
-
if (dv1 !== Number(cnpj.charAt(12))) return false;
|
|
66
|
-
if (dv2 !== Number(cnpj.charAt(13))) return false;
|
|
67
|
-
|
|
68
|
-
return true;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
module.exports = isCNPJ;
|
package/src/documents/cpf.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const { invalidListGenerator, sumElementsByMultipliers, sumToDV } = require('../lib/utils');
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* isCPF()
|
|
5
|
-
* Calcula se um CPF é válido
|
|
6
|
-
*
|
|
7
|
-
* @doc
|
|
8
|
-
* CPF deve possuir 11 dígitos.
|
|
9
|
-
*
|
|
10
|
-
* - Os caracteres 1 a 8 são números sequenciais definidos pela Receita Federal
|
|
11
|
-
*
|
|
12
|
-
* - O caractere 9 refere-se à região fiscal emissora do documento
|
|
13
|
-
* 1 – DF, GO, MS, MT e TO
|
|
14
|
-
* 2 – AC, AM, AP, PA, RO e RR
|
|
15
|
-
* 3 – CE, MA e PI
|
|
16
|
-
* 4 – AL, PB, PE, RN
|
|
17
|
-
* 5 – BA e SE
|
|
18
|
-
* 6 – MG
|
|
19
|
-
* 7 – ES e RJ
|
|
20
|
-
* 8 – SP
|
|
21
|
-
* 9 – PR e SC
|
|
22
|
-
* 0 – RS
|
|
23
|
-
*
|
|
24
|
-
* - Os caracteres 10 e 11 são dígitos verificadores.
|
|
25
|
-
*
|
|
26
|
-
* 1) Partes do número
|
|
27
|
-
* ------------------------------------------------
|
|
28
|
-
* | Número | R | DV |
|
|
29
|
-
* 2 8 0 . 0 1 2 . 3 8 9 - 3 8
|
|
30
|
-
*
|
|
31
|
-
* 2) Cálculo do primeiro DV.
|
|
32
|
-
*
|
|
33
|
-
* - Soma-se o produto das algarismos 1 a 9 pelos números 10, 9, 8, 7, 6, 5, 4, 3, 2
|
|
34
|
-
*
|
|
35
|
-
* 2 8 0 0 1 2 3 8 9
|
|
36
|
-
* x x x x x x x x x
|
|
37
|
-
* 10 9 8 7 6 5 4 3 2
|
|
38
|
-
* = 20 +72 +0 +0 +6 +10 +12 +24 +18 = 162
|
|
39
|
-
*
|
|
40
|
-
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
41
|
-
* 162 / 11 tem resto 8. 11 - 8 = 3. DV1 é 3.
|
|
42
|
-
* Obs.: Caso o cálculo de DV1 retorne 10, o resultado será 0.
|
|
43
|
-
*
|
|
44
|
-
* 3) Cálculo do segundo DV.
|
|
45
|
-
*
|
|
46
|
-
* - Soma-se o produto das algarismos 1 a 10 pelos números 11, 10, 9, 8, 7, 6, 5, 4, 3, 2
|
|
47
|
-
*
|
|
48
|
-
* 2 8 0 0 1 2 3 8 9 3
|
|
49
|
-
* x x x x x x x x x x
|
|
50
|
-
* 11 10 9 8 7 6 5 4 3 2
|
|
51
|
-
* = 22 +80 +0 +0 +7 +12 +15 +32 +27 = 201
|
|
52
|
-
*
|
|
53
|
-
* - O somatório encontrado é dividido por 11 e o resultado é subtraído de 11
|
|
54
|
-
* 201 / 11 tem resto 3. 11 - 3 = 8. DV2 é 8.
|
|
55
|
-
* Obs.: Caso o cálculo de DV2 retorne 10, o resultado será 0.
|
|
56
|
-
*
|
|
57
|
-
* Fonte: http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-cpf/
|
|
58
|
-
*
|
|
59
|
-
* @param {String} value Título eleitoral
|
|
60
|
-
* @returns {Boolean}
|
|
61
|
-
*/
|
|
62
|
-
const isCPF = (value = '') => {
|
|
63
|
-
const cpf = value.replace(/[^\d]+/g, '');
|
|
64
|
-
|
|
65
|
-
const blackList = invalidListGenerator(11);
|
|
66
|
-
if (!cpf || cpf.length !== 11 || blackList.includes(cpf)) return false;
|
|
67
|
-
|
|
68
|
-
const sum1 = sumElementsByMultipliers(cpf.substr(0, 9), [10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
69
|
-
const sum2 = sumElementsByMultipliers(cpf.substr(0, 10), [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
70
|
-
|
|
71
|
-
const dv1 = sumToDV(sum1);
|
|
72
|
-
const dv2 = sumToDV(sum2);
|
|
73
|
-
|
|
74
|
-
if (dv1 !== Number(cpf.charAt(9))) return false;
|
|
75
|
-
if (dv2 !== Number(cpf.charAt(10))) return false;
|
|
76
|
-
|
|
77
|
-
return true;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
module.exports = isCPF;
|
package/src/documents/index.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const isCPF = require('./cpf');
|
|
2
|
-
const isCNPJ = require('./cnpj');
|
|
3
|
-
const isTitulo = require('./titulo-eleitor');
|
|
4
|
-
const isPostalCode = require('./postal-code');
|
|
5
|
-
const isCNH = require('./cnh');
|
|
6
|
-
const isPIS = require('./pis-pasep');
|
|
7
|
-
|
|
8
|
-
module.exports = {
|
|
9
|
-
isCPF,
|
|
10
|
-
isCNPJ,
|
|
11
|
-
isTitulo,
|
|
12
|
-
isPostalCode,
|
|
13
|
-
isCNH,
|
|
14
|
-
isPIS,
|
|
15
|
-
};
|