Picture of the author

VILSON PADILHA

Open Source

tributos-br

Biblioteca npm de produção para cálculos fiscais brasileiros (ICMS, IPI, ST, DIFAL, MVA, CBS, IBS, PIS, COFINS) com aritmética de precisão arbitrária, zero dependências e audit trail em cada operação. Resolve o problema de drift de centavos que causa rejeições na SEFAZ.

TypeScriptVitesttsupGitHub ActionsChangesetsCodecov

Contexto

JavaScript usa IEEE 754 (ponto flutuante), causando erros silenciosos em cálculos fiscais — 1.064 × 39680 retorna 42219.520000000004 em vez de 42219.52. A SEFAZ rejeita NF-e com erros 629/630 quando há divergência de centavos. ERPs menores não implementam os 3 modos de DIFAL (base única, base dupla LC 190/2022 e base reduzida CST 20) nem FECOP na MVA ajustada, gerando diferenças reais de ~4pp em estados como RJ, MG e CE.

Meu Papel

  • Projetei e implementei motor de aritmética decimal em strings, sem nunca passar por IEEE 754
  • Desenvolvi 9 calculadoras tributárias cobrindo ICMS, IPI, ST (5 cenários), DIFAL, MVA ajustada, CBS, IBS, PIS e COFINS
  • Implementei audit trail automático — cada cálculo retorna histórico completo de etapas com fórmula e valor
  • Configurei CI/CD com GitHub Actions (matrix Node 20/22/24), Codecov e release automático via Changesets
  • Publiquei no npm com dual entry-point (ESM + CJS) e provenance verificável

Stack Técnica

TypeScript (strict mode)

noUncheckedIndexedAccess + explicit-function-return-type para máxima segurança em lógica fiscal

Aritmética em strings

Precisão arbitrária sem IEEE 754 — operações em dígitos puros eliminam drift de centavos

Vitest + 95% coverage

362+ testes com threshold enforçado — erros em cálculos fiscais significam prejuízo financeiro

tsup (ESM + CJS)

Dual build com .d.ts e .d.cts para compatibilidade com qualquer bundler ou runtime

Resultados

  • Biblioteca publicada no npm com zero dependências e precisão decimal arbitrária
  • 9 calculadoras cobrindo os principais tributos brasileiros incluindo reforma tributária (CBS/IBS) e PIS/COFINS
  • 362+ testes com 95% de cobertura enforçada em statements, branches, functions e lines
  • Audit trail em cada operação permite rastrear exatamente onde divergências ocorrem
  • CI com matrix testing (Node 20/22/24) garante compatibilidade em todas as versões LTS