A Mudança que ninguém avisou (ou quase ninguém)
A Receita Federal e o SERPRO atualizaram o formato do CNPJ. Agora, além de números, teremos letras (alfanumérico). Se o seu sistema usa aquela Regex antiga de 2010, ele vai quebrar.
Para resolver isso de forma elegante e tipada, criei a cnpj-universal. Uma biblioteca ultra-leve (~2KB) que lida com a transição do formato legado para o novo sem dor de cabeça.
O que ela faz?
- ✅ Validação Dual: Aceita o formato antigo (
11.222.333/0001-81) e o novo (12.ABC.345/01DE-35). - ✅ NestJS Ready: Já vem com decorator
@IsCNPJ()para seus DTOs. - ✅ Zero Dependências: Performance pura e sem inchar seu projeto.
- ✅ Type-Safe: Escrita para TypeScript 5.x. ou superior.
Como implementar no NestJS (class-validator)
Esqueça as validações manuais no controller. Com a cnpj-universal, você usa como um decorator nativo:
import { IsCNPJ } from "cnpj-universal";
export class EmpresaDto {
@IsCNPJ({ message: "CNPJ inválido (numérico ou alfanumérico)" })
cnpj: string;
}
Uso em Vanilla JS/TS
Se você não usa NestJS, a classe utilitária resolve tudo:
import { CNPJ } from "cnpj-universal";
CNPJ.isValid("12.ABC.345/01DE-35"); // ✅ true
CNPJ.formatar("12ABC34501DE35"); // '12.ABC.345/01DE-35'
Conclusão
A transição para o CNPJ alfanumérico é gradual, mas obrigatória. Não espere o erro chegar no seu log de produção.
Explore o projeto, abra issues e contribua:
📦 NPM: cnpj-universal
⭐ GitHub: LeandroGazoli/cnpj-universal
LeandroGazoli
/
cnpj-universal
Validação de CNPJ numérico (legado) e alfanumérico (novo formato SERPRO) para NestJS e class-validator.
CNPJ Universal ⚡
Validador Type-Safe para CNPJ Numérico (Legado) e Alfanumérico (Novo Formato SERPRO).
Compatível com NestJS, class-validator e TypeScript/JavaScript puro, com suporte completo para ambos os formatos de CNPJ brasileiros.
📋 Índice
- Características
- Instalação
- Casos de Uso
- Uso Básico
- Compatibilidade
- Formatos Aceitos
- Sobre o Novo CNPJ Alfanumérico
- Tratamento de Erros
- Contribuindo
- Licença
✨ Características
✅ Validação Dual: Suporta CNPJ numérico (legado) e alfanumérico (novo formato SERPRO)
✅ Sem Dependências Externas: Apenas class-validator como peer dependency
✅ Type-Safe: Totalmente tipado em TypeScript
✅ NestJS Ready: Funciona como decorator em DTOs
✅ Flexível: Com ou sem máscara (XX.XXX.XXX/XXXX-XX)
✅ Batch Operations: Métodos utilitários para cálculo de dígitos verificadores
✅ Leve: ~2KB minificado
✅ Zero Breaking Changes: API estável desde v1.0.0
🚀 Instalação
npm install cnpj-universal
Com yarn:
yarn add cnpj-universal
Com pnpm:
pnpm…
Top comments (0)