DEV Community

Cover image for validation-br 2.0: Validação em TypeScript, zero dependências
Claudio Medeiros
Claudio Medeiros

Posted on

validation-br 2.0: Validação em TypeScript, zero dependências

Acabei de lançar a versão 2.0 do validation-br, uma biblioteca em TypeScript para validar documentos brasileiros: CPF, CNPJ (numérico e alfanumérico), CEP, Boleto, chave Pix, Pix Copia e Cola, Título de Eleitor, PIS/PASEP, CNH, RENAVAM e mais uma dezena de outros formatos.

A grande mudança da 2.0 é a forma como a validação funciona: cada documento agora é uma classe imutável, no estilo value object. Em vez de chamar uma função que devolve true ou false, você instancia o documento e ele já nasce validado.

import { CPF } from 'validation-br/cpf';

const cpf = new CPF('906.259.666-51');

cpf.value      // -> '90625966651', o valor normalizado, sem máscara
cpf.mask()     // -> '906.259.666-51'
Enter fullscreen mode Exit fullscreen mode

Se o valor for inválido, o construtor lança uma exceção em vez de devolver false. Isso deixa o fluxo mais explícito: ou você tem um CPF de verdade em mãos, ou você trata o erro. Pra quem só quer um booleano rápido, os atalhos isCPF, isCNPJ etc. continuam existindo e funcionando exatamente como antes.

Um ponto que considero importante: o pacote não tem nenhuma dependência em produção. Zero. Só usa APIs nativas do JS/TS, o que significa um node_modules mais enxuto e uma superfície de ataque bem menor pra quem se preocupa com supply chain.

Exemplo: CNPJ alfanumérico

Desde 2026 a Receita Federal aceita CNPJ com letras no corpo do número (mantendo os dois últimos dígitos verificadores sempre numéricos). O validation-br já suporta isso, inclusive pra gerar exemplos fake pra teste:

import { CNPJ } from 'validation-br/cnpj';

// Gera um CNPJ alfanumérico de exemplo
CNPJ.fake({ alphanumeric: true }).mask();
// -> 'WX.BC2.1FX/0001-00'

new CNPJ('WX.BC2.1FX/0001-00').value;
// -> 'WXBC21FX000100', o valor normalizado
Enter fullscreen mode Exit fullscreen mode

A mesma classe calcula o dígito verificador, aplica e remove máscara, e gera valores fake válidos, tanto no formato numérico tradicional quanto no alfanumérico novo.

Onde encontrar

Top comments (0)