Releases: event-driven-io/emmett
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 Changed
- Added SQLite raw SQL projection tests by @davecosec in #229
- Converted emmett-sqlite project to use Vitest by @davecosec in #235
- In memory event store inline projections handle by @GaryACraine in #236
- Added order by to SQL queries in readStream to ensure messages ordering by @oskardudycz in #241
- Made explicit methods for reactor and projector in PostgreSQLConsumer to avoid weird type inferference issues by @oskardudycz in #242
- Trimmed PostgreSQL messages metadata stored in database and passed proper positions to on before commit hook by @oskardudycz in #243
- Fixed regression in Workflow typing after introducing messages by @oskardudycz in #244
- Added the first implementation of InMemoryMessageProcessors 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 by @oskardudycz in #247
- Made in-memory database return Promises instead of sync results by @oskardudycz in #248
- Release 0.38.0 by @oskardudycz in #249
Note: the extended release notes, with examples and more human readable will be updated soon
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
0.33.0
📝 What's Changed
- Exported the missing SQLite package code. It sounds like we did all the work making the SQLite event store, besides actually exporting it and making it available for people to use. 🤦♂️🤦♀️ Now we fixed that. by @oskardudycz in 204
Full Changelog: 0.32.0...0.33.0
0.32.0
🚀 What's New
- Added message type to store events, commands, and unify message processing. It adds a Message type that's either a command or an event. I added an additional property called kind, which will inform you what the message actually is (so if it's an event or command). This is the first step in enabling message storage and workflows. Kind is not mandatory, it's just a rebranded flavour type we already had. by @oskardudycz in 183
📝 What's Changed
- BREAKING: Renamed events tables to messages in the PostgreSQL and SQLite schemas and added message kind column. This is in theory breaking change, but I added automated migration script for PostgreSQL schema that should handle it seamlessly. If you faced any issues with that, please send us an info on Discord channel and we'll help in that by @oskardudycz in 184
📚 Docs
- Added overview page to documentation See it live in documentation by @tburny in 200
- Improved samples of events with metadata by @shraddha38 in 201
New Contributors
- @shraddha38 made their first contribution in 201
💬 Discuss this release on Discord
Full Changelog: 0.31.0...0.32.0
0.31.0
🚀 What's New
- Added the first version of PostgreSQL async projections by @oskardudycz in #197
Projections are defined the same way as inline ones (see more in the article).
The easiest way to use it is to:
const eventStore = getPostgreSQLEventStore(connectionString);
const consumer = eventStore.consumer();
consumer.processor({projection: someProjection });
consumer.processor({projection: otherProjection});
await consumer.start()
You can also run it explicitly:
const consumer = postgreSQLEventStoreConsumer({
connectionString,
});
consumer.processor({projection: someProjection });
consumer.processor({projection: otherProjection});
await consumer.start()
or
const consumer = postgreSQLEventStoreConsumer({
connectionString,
processors: [
postgreSQLProcessor({ projection: someProjection}),
postgreSQLProcessor({ projection: otherProjection }),
],
});
await consumer.start();
I'm also considering, in the further releases, making them automatically registered as:
const eventStore = getPostgreSQLEventStore({
connectionString,
projections: projections.async([someProjection, otherProjection]),
});
// consumer will get async projections registered as processors
const consumer = eventStore.consumer();
await consumer.start()
📚 Docs
New Contributors
Full Changelog: 0.30.0...0.31.0
0.30.0
📝 What's Changed
- Made consumer options really optional when creating it from event stores by @oskardudycz in 195
Full Changelog: 0.29.0...0.30.0