Skip to content

sh4rkzy/brazilian-validator

Repository files navigation

🇧🇷 Brazilian Validator

npm version npm downloads GitHub Workflow Status TypeScript Poku Biome Coverage Status License: MIT Node.js ESM NestJS GitHub Stars

🚀 Valide documentos brasileiros (CPF e CNPJ) no NestJS/TypeScript de forma simples, nativa e sem dependências extras.

InstalaçãoUso no TypeScriptExemplos no NestJSAPI e DecoratorsTestesRoadmapContribuindoContribuindo


📦 Instalação

npm install @sh4rkzy/brazilian-validator class-validator class-transformer

ou

yarn add @sh4rkzy/brazilian-validator class-validator class-transformer

🟦 Uso no TypeScript

A biblioteca é totalmente compatível com TypeScript e pode ser usada sem NestJS.

import 'reflect-metadata';
import { validate } from 'class-validator';
import { IsCPF, IsCNPJ } from '@sh4rkzy/brazilian-validator';

class User {
  @IsCPF({ message: 'CPF inválido' })
  cpf!: string;

  @IsCNPJ({ message: 'CNPJ inválido' })
  cnpj!: string;
}

async function run() {
  const user = new User();
  user.cpf = '12345678900'; // inválido
  user.cnpj = '11222333000181'; // válido

  const errors = await validate(user);
  console.log(errors);
}

run();

Também é possível usar funções utilitárias diretamente:

import { validateCpfDigit, validateCnpjDigit } from '@sh4rkzy/brazilian-validator';

console.log(validateCpfDigit('111.444.777-35')); // true
console.log(validateCnpjDigit('11.222.333/0001-81')); // true

🛠️ Exemplos no NestJS

DTO de criação de usuário

import { IsCPF } from '@sh4rkzy/brazilian-validator';
import { Body, Controller, Post } from '@nestjs/common';

class CreateUserDto {
  @IsCPF()
  cpf!: string;
}

@Controller('users')
export class UsersController {
  @Post()
  create(@Body() body: CreateUserDto) {
    return body;
  }
}

Configurando ValidationPipe no main.ts

import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

🎯 API e Decorators

Funções utilitárias

  • validateCpfDigit(cpf: string): boolean
  • validateCnpjDigit(cnpj: string): boolean

Decorators disponíveis

  • @IsCPF(options?)
  • @IsCNPJ(options?)

Opções dos decorators:

class Company {
  @IsCPF()
  responsibleCpf!: string;

  @IsCPF({ lengthOnly: true })
  backupCpf!: string;

  @IsCNPJ({ message: 'CNPJ da empresa inválido' })
  companyCnpj!: string;
}

🧪 Testes

Este projeto possui 100% de cobertura de testes com Poku.

Executar testes

npm test

Executar testes em modo watch

npm run test:watch

Executar linting

npm run lint

🤝 Contribuindo

Contribuições são bem-vindas! Veja como contribuir:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Desenvolvimento local

# Clone o repositório
git clone https://github.com/sh4rkzy/brazilian-validator.git

# Instale as dependências
npm install

# Execute os testes
npm test

# Execute o build
npm run build

🛣️ Roadmap

  • v0.0.1 - Core CPF/CNPJ validation
  • v0.0.2 - TypeScript decorators
  • v0.0.4 - Complete test suite
  • 🔄 v0.1.0 - RG validation
  • 🔄 v0.2.0 - CEP validation
  • 🔄 v0.3.0 - Título de Eleitor validation
  • 🔄 v0.4.0 - React Hook Form integration

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.


🔗 Links Úteis

📞 Suporte

Feito com ❤️ para a comunidade

⭐ Se este projeto foi útil, considere dar uma estrela no GitHub!

Kaue Campos - Software Engineer

About

Valide documentos brasileiros (CPF e CNPJ) no NestJS/TypeScript de forma simples, nativa.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •