Skip to content

Releases: theuves/cpf

v3.0.0 [Oct 8, 2026]

Choose a tag to compare

@theuves theuves released this 10 Aug 17:27

Changelog

Security

  • generateMany rejeita contagens acima de 10.000 para impedir esgotamento de memória por alocação síncrona de lotes sem limite
  • Busca de reparos de CPF rejeita entradas excessivamente longas (>64 caracteres) antes de executar expressões regulares e normalização
  • Política de segurança e processo de report de vulnerabilidades adicionados

Added

  • API semântica completa: isValid, inspect, matchesFormat, normalize, format, parse, calculateCheckDigits, findValidRepairs, generate, generateMany
  • cpf.getFiscalRegions para obter UFs associadas ao CPF
  • cnpj.getKind para classificar estruturas como numéricas ou alfanuméricas sem atestar dígitos verificadores
  • Suporte completo a coexistência de CNPJ numérico e alfanumérico em validação, formato, parsing, cálculo, geração e reparo
  • Aceita CNPJ com até 12 caracteres alfanuméricos + 2 dígitos verificadores (exemplo: 12.ABC.345/01DE-35)
  • Tipos públicos: DocumentIssueCode, CpfInspectionResult, CnpjInspectionResult, CpfIssueCode, CnpjBody, CnpjKind, RepairOptions
  • Opções de geração: validity, output, kind, randomSource
  • Testes determinísticos baseados em propriedades para núcleo compartilhado
  • Cobertura mínima de 100% para linhas, statements, funções e branches
  • Vetores oficiais da Receita Federal para validação de CNPJ
  • Códigos de erro estáveis para diagnóstico: INVALID_TYPE, INVALID_CHARACTERS, INVALID_LENGTH, INVALID_VERIFIER_CHARACTERS, REPEATED_CHARACTERS, INVALID_CHECK_DIGITS
  • Suporte multi-runtime: ESM, CommonJS e IIFE (navegador)
  • Subpaths granulares para importação: cpf/cpf e cpf/cnpj
  • Declarações TypeScript completas: .d.mts para ESM, .d.cts para CommonJS, fallback .d.ts
  • Documentação completa com 9 Registros de Decisão Arquitetural (ADRs)
  • Guia de migração detalhado (docs/migration-v3.md)
  • Especificação de regras de domínio (docs/domain-rules.md)
  • Política de suporte com matriz de Node.js (16, 18, 20, 22, 24+)
  • Guia de contribuição (CONTRIBUTING.md)
  • Política de segurança (SECURITY.md)
  • Templates de issue com validação para bug reports
  • Pull request template com checklist de compatibilidade
  • Dependabot para atualizações de dependências
  • GitHub Funding
  • GitHub Actions CI/CD com CodeQL para análise de segurança

Changed

  • validate renomeado para isValid com mesmo comportamento booleano
  • check({ strict }) renomeado para matchesFormat({ completeness }) com reestruturação de opções
  • unformat renomeado para normalize com mesmo funcionamento
  • calc renomeado para calculateCheckDigits com mesmo cálculo
  • repair renomeado para findValidRepairs que sempre retorna array
  • rfs movido para cpf.getFiscalRegions
  • generate() sempre retorna string única; generateMany(count) para geração em lote
  • parse agora exige valor completo e retorna campos semânticos em strings em vez de arrays numéricos
  • parse remove separadores admitidos em qualquer posição
  • parse converte CNPJ em minúsculas para MAIÚSCULAS automaticamente
  • calculateCheckDigits aceita corpo CNPJ em string ou array contendo números e letras maiúsculas
  • Geração de CNPJ recebe opção kind: 'numeric' | 'alphanumeric'; padrão permanece numérico
  • findValidRepairs adota ? como marcador padrão; X no corpo é agora dado válido
  • normalize converte letras CNPJ a maiúsculas sem truncar valores inválidos
  • Testes probabilísticos de geração substituídos por invariantes reproduzíveis
  • Tipagem de cpf.inspect não inclui mais INVALID_VERIFIER_CHARACTERS (impossível nesse domínio)
  • generate e generateMany compartilham mesmo tipo público de opções

Removed

  • Aliases da série 2.x
  • clear, getCD
  • Suporte a entrada numérica irrestrita em format
  • Retorno condicional de generate
  • API legada completamente removida

Compatibility

  • Esta é uma versão major por mudanças em tipos e semântica de parsing, normalização e reparo de CNPJ
  • Suportado em Node.js 16, 18, 20, 22, 24+
  • Compatível com ESM e CommonJS
  • Funciona em navegadores via IIFE
  • TypeScript com moduleResolution: NodeNext
  • Zero dependências de runtime
  • Consulte docs/migration-v3.md para detalhes completos de migração