Releases: event-driven-io/emmett
0.38.5
π What's Changed
- Fixed deepEquals setup to cover a wider range of cases Now it should work for dates, sets, maps and other types in a more rigid way. by @oskardudycz in #262
Full Changelog: 0.38.4...0.38.5
0.38.4
π What's Changed
- Improved PostgreSQL Event Store performance. Ensured that the information that migrations were run is preserved throughout the event store creation in the command handler. This was causing redundant tries to create the schema again. Improved the check for existing stream during append to avoid a potential full scan instead of the index check. by @oskardudycz in 259 and 261
π Docs
- Added read models documentation to getting started by @oskardudycz in 254
Full Changelog: 0.38.3...0.38.4
0.38.3
π What's Changed
- Fixed ESDB reactors to handle events sequentially by @oskardudycz in #252
- Fixed InMemorDatabase replace method to select document to replace correctly by @oskardudycz in #252
- Made reactors skip events that they have already processed. This is done by checking if the message checkpoint is greater than the last processed one. by @oskardudycz in #252
Full Changelog: 0.38.2...0.38.3
0.38.2
π What's Changed
- Fixed EventStoreDB category stream checkpointing Now, consumers for category and event type streams should be able to properly checkpoint their positions. by @oskardudycz in #251
Full Changelog: 0.38.1...0.38.2
0.38.1
π What's Changed
- Fixed bug in MongoDB inline projection count helper to ignored deleted projections. by @alex-laycalvert in #250
Full Changelog: 0.38.0...0.38.1
0.38.0
π What's New
1. In-memory event store improvements
- Added handling to inline projections in the in-memory event store. Great for playing with Emmett and prototyping before needing to use the regular durable storage. by @GaryACraine in 236
- Made in-memory database return Promises instead of sync results by @oskardudycz in 248
2. SQLite event store improvements
- Added SQLite raw SQL projection tests Now you can both define and test raw SQL projections with SQLite. See more in sample test by @davecosec in 229
3. Consumer improvements
- Added explicit methods for reactor and projector in PostgreSQLConsumer to avoid weird type inference issues Now you can define processors by their explicit archetypes based on your intention. Projector for projections, and reactor for general message handling by @oskardudycz in 242
- Added the first implementation of InMemoryMessageProcessors Now you can plug them to any store if you don't need durable checkpointing (e.g. for rebuilding always in-memory projections upon application start) by @oskardudycz in 245
- Refactored EventStoreDB consumer to reuse Message Consumer abstractions by @oskardudycz in 246
- Add capability to specify custom checkpoint resolution by consumer or processor This was needed as some stores like EventStoreDB require a complicated checkpoint resolution strategy that needs to be aware of the consumer setup. by @oskardudycz in #247
π What's Changed
- Added order by to PostgreSQL and SQLIte event store readStream queries ensure message ordering. It appears that not always database was able to use sorded index and returned messages out of order, this PR fixes that 241
- Fixed regression in Workflow typing after introducing messages by @oskardudycz in #244*
- Trimmed PostgreSQL messages metadata stored in database and passed proper positions to on before commit hook Now only data that's not stored in regular column is kept in metadata by @oskardudycz in #243
π οΈ CI/CD
- Converted the emmett-sqlite project to use Vitest. This will allow for future testing of SQLite compatibility in a browser. by @davecosec in 235
New Contributors
- @GaryACraine made their first contribution in #236
Full Changelog: 0.37.0...0.38.0
0.37.0
π What's New
- Added the possibility of handling a sequence of command handlers for a single stream as a single append. Now you can pass multiple decide function and run multiple operation a single batch. by @oskardudycz in #230
- Added retry on EventStoreDB connection drop for consumer by @oskardudycz in #234
π Docs
- Add quick intro to Emmeett documentation. Check now it here, to learn how to quickly get started with the minimum setup. by @tburny in #220
- Extended Emmmett overview documentation Now the main features are listed, reasoning why to use it, and getting started video is embedded. by @oskardudycz in #228
- Fixed incorrect package names in "Getting Started" documentation by @CharlesFarris in #231
New Contributors
- @CharlesFarris made their first contribution in #231
Full Changelog: 0.36.0...0.37.0
0.36.0
π What's New
1. Added the first version of PostgreSQL projections rebuild. It'll go through all events asynchronously applying provided projections. You can use it as:
import { rebuildPostgreSQLProjections } from '@event-driven-io/emmett-postgresql';
const consumer = rebuildPostgreSQLProjections({
connectionString,
projection: shoppingCartsSummaryProjectionV2,
});
or for multiple projections:
import { rebuildPostgreSQLProjections } from '@event-driven-io/emmett-postgresql';
const consumer = rebuildPostgreSQLProjections({
connectionString,
projections: [
shoppingCartsSummaryProjectionV2,
otherShoppingCartsSummaryProjectionV2,
],
});
await consumer.start();
It'll perform an in-place rebuild, by default truncating the projection data (that can be configured). It'll stop processing when it reaches the end of the event log.
WARNING: During rebuild, you should not allow to run inline projection, as that can lead to wrong handling. Further releases will make that more bulletproof.
by @oskardudycz in #225
2. InMemoryDatabase can query for multiple documents. That enables filtering and using it actually for both single read and list endpoints. by @stepaniukm in #226
π What's Changed
1. Added generic MessageProcessor abstraction to unify signatures and handling between different exact implementations. This is the first step to unify consumer and processors handling across different event stores. by @oskardudycz in #202
π¬ Discuss this release on Discord
Full Changelog: 0.35.0...0.36.0
0.35.0
π What's New
- Added the first iteration of inMemoryDatabase with handle possibilities This is the first step to support in-memory projections by @stepaniukm in 207
- Added the first version of SQLite Consumers. Note that this is the first iteration that works with file-based databases. The consumers to in-memory SQLite database are still a work in progress. by @LuccaHellriegel and @oskardudycz in 212, 216.
- Added devcontainer configuration for consistent development environment for contribution by @tburny in 209
π What's Changed
- Fixed typo in Express.js defaulErrorToProblemDetailsMapping by @ducin in 213
- Added tests for SQLite eventStore onBeforeCommit hook by @davecosec in 211
- Fix ESDB consumer filtering of a single stream. Previously it was always subscribing to $all stream. by @mbirkegaard and @oskardudycz in 222
- Fixed the ProjectionDefinition registration not to conflict with custom event type by @oskardudycz in #223
π Docs
- Moved all entries in API reference into dedicated pages. That should keep them easier accessible and focused by @tburny in 203
- Eliminated dead links in documentation by @tburny in 210
- Add Diataxis documentation type to existing documentation. In the longer term this should make easier to reason about intention behind docs and search them by tags. by @tburny in #219
New Contributors
- @ducin made their first contribution in 213
- @LuccaHellriegel made their first contribution in 213
- @mbirkegaard made their first contribution in in 213
Full Changelog: 0.34.0...0.35.0
0.34.0
π What's New
- Added the first version of SQLite projections and exposed onBeforeCommit hook by @oskardudycz in 205
Full Changelog: 0.33.0...0.34.0