Skip to content

v3.2.0

Latest

Choose a tag to compare

@andrekutianski andrekutianski released this 26 Apr 01:13
73e5587

📦 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 NfeClient e 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+. O esbuild patcheado 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 usa astToString() para conversão
  • ✅ Input convertido para URL via pathToFileURL (exigência do v7)
  • ✅ Opção immutableTypes renomeada para immutable; exportType removida (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 FormData em tests/unit/companies.test.ts ajustado 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_idGetServiceInvoices_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