validation-br
Biblioteca de validação de documentos pessoais do Brasil com suporte a CPF, CNPJ (numérico e alfanumérico), 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.
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.
Instalação
yarn add validation-br
npm install validation-br
Importação
Importação direta
Permite realizar diretamente uma validação a partir do objeto principal
const { isCPF, isCNPJ } = require('validation-br')
import { isCPF, isCNPJ } from 'validation-br'
Importação de submódulos
Importando os submódulos, é possível criar máscaras, números fake para testes de desenvolvimento e calcular dígitos verificadores.
Exemplos
import { dv, fake, mask, validate } from 'validation-br/dist/cpf'
import * as cpf from 'validation-br/dist/cpf'
const cpf = require('validation-br/dist/cpf')
const { dv, fake, mask, validate } = require('validation-br/dist/cpf')
cpf.dv(906259666)
cpf.dv('906259666')
cpf.dv('906.259.666')
cpf.fake()
cpf.fake(true)
cpf.mask(90625966651)
cpf.validate('01234567890')
cpf.validateOrFail('01234567890')
Tabela de Conteúdo
Funções de Validação
Usando em outras bibliotecas de validação
Validation-BR pode ser utilizado em conjunto com quaisquer bibliotecas de validação que permita estender seus métodos.
Abaixo seguem alguns exemplos. Sinta-se convidado a adicionar a sua biblioteca favorita em nosso wiki.
- Vuelidate - Usado para validação de estado no vuejs
- Class-Validator - Usado em nest, typeorm E mais uma infinidade de frameworks
- Indicative - Indicative é a biblioteca padrão de validação usada no Adonis.
- Joi - Joi é um validador de esquemas usado em aplicações node, react, vue etc.
- Yup - Yup é usado para validar estado em aplicações react.
isCNH( value
)
Valida o documento da carteira nacional de habilitação.
import { isCNH } from 'validation-br'
import { validate, mask } from 'validation-br/dist/cnh'
import * as cnh from 'validation-br/dist/cnh'
isCNH('69044271146')
isCNH('62472927637')
isCNH('46190476839')
cnh.validate('62472927637')
cnh.validateOrFail('62472927637')
cnh.fake()
cnh.fake(true)
cnh.mask('62472927637')
cnh.dv('624729276')
isCNPJ( value
)
Valida um CNPJ
A partir da Nota Técnica conjunta COCAD/SUARA/RFB nº 49 de 14 de maio de 2024, os números de CNPJ poderão ser alfanuméricos. A alteração entra em uso em 2026.
import { isCNPJ } from 'validation-br'
import { validate, mask } from 'validation-br/dist/cnpj'
import * as cnpj from 'validation-br/dist/cnpj'
isCNPJ('73.797.980/0001-79')
isCNPJ('55585709000198')
isCNPJ('99362238000180')
cnpj.validate('99362238000180')
cnpj.validateOrFail('99362238000180')
cnpj.fake()
cnpj.fake(true)
cnpj.fake({ withMask: true})
cnpj.fake({ withMask: true, alphanumeric: true})
cnpj.fake({ withMask: false, alphanumeric: true})
cnpj.mask('99362238000180')
cnpj.dv('993622380001')
isCPF( value
)
Valida um CPF
import { isCPF } from 'validation-br'
import { validate, mask } from 'validation-br/dist/cpf'
import * as cpf from 'validation-br/dist/cpf'
isCPF('01234567890')
isCPF('012.345.678-90')
isCPF('01234567891')
cpf.validate('01234567890')
cpf.validateOrFail('01234567890')
cpf.fake()
cpf.fake(true)
cpf.mask('01234567890')
cpf.dv('012345678')
isJudicialProcess( value
)
Valida números de processo da esfera judicial. Esta padronização foi adotada em 2010 e de lá para cá todos os processos judiciais abertos no país seguem o mesmo padrão, seja eleitoral, cível, militar etc.
O número é composto por 6 partes:
-
Número sequencial dado pelo órgão de registro, reiniciado a cada ano, com até 7 caracteres
-
Dígito verificador com 2 caracteres
-
Ano de registro com 4 caracteres
-
Órgão do poder judiciário com 1 caractere, sendo eles:
- 1 - Supremo Tribunal Federal
- 2 - Conselho Nacional de Justiça
- 3 - Superior Tribunal de Justiça
- 4 - Justiça Federal
- 5 - Justiça do Trabalho
- 6 - Justiça Eleitoral
- 7 - Justiça Militar da União
- 8 - Justiça dos Estados e do Distrito Federal e Territórios
- 9 - Justiça Militar Estadual
-
Tribunal do segmento do poder judiciário com 2 caracteres
-
Código da unidade de origem do processo com 4 caracteres
import { isJudicialProcess } from 'validation-br'
import { validate, mask } from 'validation-br/dist/judicialProcess'
import * as judicialProcess from 'validation-br/dist/judicialProcess'
isJudicialProcess('20802520125150049')
isJudicialProcess('0011006-07.2016.8.20.0100')
isJudicialProcess('00110060720168200101')
judicialProcess.validate('00110060720168200100')
judicialProcess.validateOrFail('00110060720168200100')
judicialProcess.fake()
judicialProcess.fake(true)
judicialProcess.mask('00110060720168200100')
judicialProcess.dv('001100620168200100')
isNUP17( value
)
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.
- Os primeiros 5 dígitos correspondem código do órgão
- 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
- Os dígitos 12 a 15 representam o ano de registro do protocolo
- Os caracteres 16 a 17 são o dígito verificador
import { isNUP17 } from 'validation-br'
import { validate, mask } from 'validation-br/dist/nup17'
import * as nup from 'validation-br/dist/nup17'
isNUP17('23037001462202165')
isNUP17('23037.001462/2021-65')
isNUP17('23037.001462/2021-66')
nup.validate('23037.001462/2021-65')
nup.validateOrFail('23037.001462/2021-65')
nup.fake()
nup.fake(true)
nup.mask('23037001462202165')
nup.dv('230370014622021')
isPIS( value
)
Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita números com e sem pontos e traços.
import { isPIS } from 'validation-br'
import { validate, mask } from 'validation-br/dist/pisPasep'
import * as pis from 'validation-br/dist/pisPasep'
isPIS('71282677380')
isPIS('237.95126.95-5')
isPIS('500.12973.80-1')
pis.validate('71282677380')
pis.validateOrFail('71282677380')
pis.fake()
pis.fake(true)
pis.mask('71282677380')
pis.dv('7128267738')
isPostalCode( value
)
Valida um código de rastreamento de objetos postais no formato XX00000000DYY, onde:
- XX: O código do objeto postal com 2 dígitos;
- 00000000: Número sequencial do objeto com 8 dígitos;
- D: Dígito Verificador
- YY: País de origem do objeto com 2 dígitos.
import { isPostalCode } from 'validation-br'
import { validate, mask } from 'validation-br/dist/postalCode'
import * as postalCode from 'validation-br/dist/postalCode'
isPostalCode('PN718252423BR')
isPostalCode('RY728187035CN')
isPostalCode('JT194624698BR')
postalCode.validate('PN718252423BR')
postalCode.validateOrFail('PN718252423BR')
postalCode.fake()
postalCode.fake(true)
postalCode.mask('pn718252423br')
postalCode.dv('PN718252423BR')
isRenavam( value
)
Valida o número de um RENAVAM de 11 dígitos
import { isRenavam } from 'validation-br'
import { validate, mask } from 'validation-br/dist/renavam'
import * as renavam from 'validation-br/dist/renavam'
isRenavam('14283256656')
isRenavam('95059845976')
isRenavam('67747331626')
renavam.validate('95059845976')
renavam.validateOrFail('95059845976')
renavam.fake()
renavam.fake(true)
renavam.mask('95059845976')
renavam.dv('950598459')
isTituloEleitor( value
)
Valida um título eleitoral
import { isTituloEleitor } from 'validation-br'
import { validate, mask } from 'validation-br/dist/tituloEleitor'
import * as titulo from 'validation-br/dist/tituloEleitor'
isTituloEleitor('743650641660')
isTituloEleitor('525028881694')
isTituloEleitor('153016161686')
titulo.validate('01234567890')
titulo.validateOrFail('01234567890')
titulo.fake()
titulo.fake(true)
titulo.mask('525028881694')
titulo.dv('5250288816')
Testes
Todos os testes passando com 100% de cobertura
Github Actions
Github actions executados nas versões 18, 20 e 22 do Node.
Changelog
- 16/12/2023:
- 1.5.0
- CNPJ alfanumérico
- Removidos github actions dos node 12, 14 e 16 e acrescentado o 22
- 16/12/2023:
- 1.4.5
- Corrige o caminho da definição dos types. (Thanks @ishigami)
- 30/12/2022:
- 1.4.4
- Correção de bug quando o documento válido tinha caracteres adicionais
- Refatoração de
clearValue()
para comportar configurações opcionais
- 01/10/2022:
- 1.4.1
- Correção na importação principal dos módulos
- Refatoração do isJudicialProcess para permitir 100% de cobertura dos testes
- Inclusão de mais testes unitários para atingir 100% de cobertura
- 10/01/2022:
- 1.1.0 - Adicionado NUP17 - Número Unificado de Protocolo de 17 dígitos do Governo Federal
- 09/01/2022:
- 1.0.0 - Biblioteca convertida para Typescript e testes convertidos para Jest
- 08/01/2022:
- 0.21.1 - Adicionadas as funções isRenavam e isJudicialProcess
- 16/09/2021:
- 0.5.0 - Adicionadas as funções isCPF, isCNPJ e isTituloEleitor
- 0.7.0 - Adicionadas as funções isPostalCode e isCNH
- 0.8.0 - Adicionada a função isPIS
Referências