Skip to content

v0.15.0

Choose a tag to compare

@EtaCassiopeia EtaCassiopeia released this 21 Jul 13:13
d39a5b2

First release of @rift-vs/rift and @rift-vs/rift-embedded cut from achird-labs/rift-node.

Everything below had accumulated as unreleased work in this repo; this is where it reaches npm.

Upgrading from 0.14.0

The published 0.14.0 line came from the old EtaCassiopeia/rift repo and is a different codebase — this release supersedes it. Both are ESM with identical entry points, so your imports are unchanged. What does change:

  • Node ≥ 20 is now required (was ≥ 18).
  • Zero runtime dependenciesaxios is gone.
  • No postinstall download. The engine binary is resolved on demand at first use (RIFT_BINARY_PATHPATH → version cache → download), never at install time, and never at all when RIFT_OFFLINE / RIFT_SKIP_BINARY_DOWNLOAD is set.
  • The ./testkit/vitest, ./testkit/jest and ./intercept-undici subpaths are declared in the exports map but remain placeholder modules until those features land.

Highlights

  • Typed DSL for imposters, stubs, predicates, responses, behaviors, faults, proxies, scripts and scenarios — alongside the permanent Mountebank-compatible create() surface. Neither is deprecated; adopt incrementally.
  • Three transportsrift.embedded() (in-process, via @rift-vs/rift-embedded), rift.spawn() (child process), rift.connect() (existing admin port).
  • Verificationimposter.verify(match, times(n)) with WireMock-style near-miss diffs, plus recorded(), count matchers, and a polling request iterator.
  • datadir persistence on the compat create(), at parity with rift.spawn({ datadir }).
  • Fail-loud on impostersRepository / redis — these were previously accepted-and-ignored, silently degrading to a single-process in-memory server. They now throw UnsupportedCreateOptionError naming the supported alternatives.
  • Engine pin defaults to v0.15.0, which fixes the Mountebank-parity 400 on numeric/boolean HTTP header values.

Full detail in CHANGELOG.md · migration guide in docs/migration.md.