📦 Release Notes - NFE.io SDK v3.2.0
🎯 Visão Geral
Release de manutenção e segurança focada em higiene de dependências e modernização do pipeline de build/teste. Não há mudanças de comportamento em runtime — todas as atualizações ocorreram em ferramentas de desenvolvimento (devDependencies), que não são distribuídas no pacote publicado.
💡 TL;DR: Se você consome o SDK apenas via
NfeCliente seus métodos públicos, esta atualização é transparente. Atualize sem preocupação:npm install nfe-io@3.2.0
🔒 Correções de Segurança
Resolvidas 14 vulnerabilidades reportadas pelo npm audit (7 high, 7 moderate), todas em devDependencies:
| Pacote | Severidade | Advisories |
|---|---|---|
undici (via openapi-typescript) |
🔴 high | GHSA-g9mf-h72j-4rw9, GHSA-2mjp-6q6p-2qxm, GHSA-vrm6-8vpv-qv8q, GHSA-v9p9-hfj2-hcw8, GHSA-4992-7rv2-5pvq |
minimatch (via @typescript-eslint) |
🔴 high | GHSA-3ppc-4f35-3m26, GHSA-7r86-cg39-jmmj, GHSA-23c5-xmqv-rm74 |
esbuild (via vitest) |
🟡 moderate | GHSA-67mh-4wv8-2f99 |
✅ Resultado: npm audit agora reporta 0 vulnerabilidades.
🔧 Atualizações de Dependências (devDependencies)
| Pacote | De | Para |
|---|---|---|
@typescript-eslint/eslint-plugin |
^6.21.0 |
^8.59.0 |
@typescript-eslint/parser |
^6.21.0 |
^8.59.0 |
vitest |
^1.6.1 |
^3.2.4 |
@vitest/coverage-v8 |
^1.6.1 |
^3.2.4 |
@vitest/ui |
^1.6.1 |
^3.2.4 |
openapi-typescript |
^6.7.0 |
^7.13.0 |
Nota sobre o vitest: Mantemos a linha 3.x (e não 4.x) para preservar compatibilidade com Node 18. Vitest 4 depende do
rolldown, que requer Node 20+. Oesbuildpatcheado já está disponível na 3.x via Vite.
🛠️ Modernização do Pipeline de Geração de Tipos
Adaptação do script scripts/generate-types.ts para a nova API do openapi-typescript v7:
- ✅ Migração para a nova assinatura:
openapiTS()agora retorna AST e usaastToString()para conversão - ✅ Input convertido para
URLviapathToFileURL(exigência do v7) - ✅ Opção
immutableTypesrenomeada paraimmutable;exportTyperemovida (agora é padrão) - ✅ Adicionada configuração Redocly (
createConfig) para tolerar specs legados que falhariam na validação estrita do v7
🧪 Testes
- 30 chamadas em testes de integração migradas para a nova assinatura
it(name, opts, fn)(compatível com vitest 3.x e futura migração para 4.x) - Mock de
FormDataemtests/unit/companies.test.tsajustado para boa prática de mock de construtor - ✅ 606 testes passando, 47 skipped — mesma cobertura de antes, validados em Node 18, 20 e 22
📝 Mudança no Spec OpenAPI
openapi/spec/nf-servico-v1.yaml: o operationId do endpoint:
GET /v1/companies/{company_id}/serviceinvoices/external/{id}
foi renomeado de ServiceInvoices_idGet → ServiceInvoices_externalIdGet.
Motivo: o spec tinha uma duplicata real de operationId, que o openapi-typescript v6 silenciosamente fundia em uma única operação. O v7 corretamente mantém as duas operações distintas. Esta mudança é apenas em metadata de geração de código — não afeta o comportamento da API REST.
⚠️ Possível Impacto em Tipos Gerados
A maioria dos consumidores não é afetada. No entanto, se você referencia tipos gerados internos diretamente (ex.: operations[\"ServiceInvoices_idGet\"] em src/generated/), pode precisar ajustar:
| Endpoint | Antes (v3.1.0) | Agora (v3.2.0) |
|---|---|---|
GET /serviceinvoices/{id} |
operations[\"ServiceInvoices_idGet\"] |
operations[\"ServiceInvoices_idGet\"] (inalterado) |
GET /serviceinvoices/external/{id} |
operations[\"ServiceInvoices_idGet\"] (fundido) |
operations[\"ServiceInvoices_externalIdGet\"] (novo) |
Consumidores que usam apenas NfeClient e seus métodos públicos (client.serviceInvoices.retrieve(...), etc.) não precisam de nenhuma mudança.
📊 Resumo
| Antes | Depois | |
|---|---|---|
Vulnerabilidades (npm audit) |
14 (7 high, 7 moderate) | 0 ✅ |
| Compatibilidade de Node | 18, 20, 22 | 18, 20, 22 ✅ |
| Testes passando | 606 | 606 ✅ |
| API pública do SDK | — | Inalterada ✅ |
📦 Como Instalar
npm install nfe-io@3.2.0
# ou
yarn add nfe-io@3.2.0
# ou
pnpm add nfe-io@3.2.0🔗 Links Úteis
Diff completo: v3.1.0...v3.2.0