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.
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
