Skip to content

Suites v3.1.0

Choose a tag to compare

@omermorad omermorad released this 05 May 15:24
· 3 commits to master since this release

v3.1.0 (2025-05-05)

Documentation: https://suites.dev/docs
Installation: https://suites.dev/docs/get-started/installation

This release fixes the ESM output that shipped broken in v3.0 (missing .js extensions on relative imports), restores compatibility with Vitest 4.x (which made mock properties getter-only, causing a TypeError in the proxy), and correctly resolves Mocked<T> types under moduleResolution: NodeNext. It also ships JSDoc across all public APIs, README files on every npm package, and removes the lodash dependency from @suites/di.inversify.

Note: Vitest 4.x requires Node.js >= 20. If you are using the Vitest adapter on Node 18, stay on Vitest 3.x or upgrade Node.

Bug Fixes

  • doubles.vitest
    • #1013 fix(doubles.vitest): skip non-writable properties in proxy set trap, closes #966 (@omermorad)
    • #1013 fix(doubles.vitest): use raw target object for descriptor lookup in overrideMockImp (@omermorad)
  • doubles.jest
    • #1013 fix(doubles.jest): skip non-writable properties in proxy set trap (@omermorad)
    • #1013 fix(doubles.jest): use raw target object for descriptor lookup in overrideMockImp (@omermorad)
  • doubles.sinon
    • #1013 fix(doubles.sinon): skip non-writable properties in proxy set trap (@omermorad)
    • #1013 fix(doubles.sinon): use raw target object for descriptor lookup in overrideMockImp (@omermorad)
  • unit
    • #950 fix(unit): correct ESM type resolution for Mocked<T> under moduleResolution: NodeNext, closes #426, #668, #872 (@iddan)
  • core.unit
    • #925 fix(core): add missing @suites/types.doubles dependency (@omermorad)
  • types.doubles
    • #923 fix(types.doubles): add missing @suites/types.common dependency (@omermorad)
    • #950 fix(types.doubles): remove overly strict engines: node >= 20 constraint (@iddan)
  • di.inversify
    • #783 fix(di.inversify): replace lodash.isEqual with node:util isDeepStrictEqual, removes lodash dependency (@HarrySky)
    • #950 fix(di.inversify): revert overly strict reflect-metadata version constraint (@iddan)
  • *
    • #950 fix(*): add .js extensions to all relative imports in ESM output, closes #946, #966 (@iddan)

Enhancements

  • *
    • #950 build(*): add per-format tsconfig.cjs.json / tsconfig.esm.json with moduleResolution: NodeNext (@iddan)
    • #1013 ci: add ESM e2e runs to CI matrix for Jest and Vitest (@omermorad)
    • #957 docs(*): comprehensive JSDoc coverage across all public APIs (@iddan)
    • #936 docs(*): add README.md to all packages on npm (@omermorad)

Features

  • unit
    • #950 feat(unit): directly export Mocked and StubbedInstance type abstractions from @suites/unit (@iddan)

New Contributors 🎉