sourcerer 0.1.0

Event-sourcing framework providing aggregates, repositories, stores, snapshots and upcasters for Rust applications.
Documentation
[package]
name = "sourcerer"
version = "0.1.0"
edition = "2024"
description = "Event-sourcing framework providing aggregates, repositories, stores, snapshots and upcasters for Rust applications."
license = "MIT"

[dependencies]
serde.workspace = true
serde_json = "1.0"
uuid.workspace = true
thiserror.workspace = true
async-trait.workspace = true
futures = "0.3"
# Optional dependency for the sled-backed stores. Enabled via the `sled-storage` feature.
sled = { version = "0.34", optional = true }
tracing.workspace = true
# Optional dependency for the Postgres-backed stores (via sqlx).
sqlx = { workspace = true, features = ["runtime-tokio", "postgres", "json"], optional = true }
cloudevents-sdk = { workspace = true }
url.workspace = true
dashmap.workspace = true

[lints]
workspace = true

[features]
# Enable the in-memory store implementation by default so the crate works out
# of the box without any additional flags. Applications that need the
# persistent `sled` backend can disable default features and enable
# `sled-storage` instead (e.g. `features = ["sled-storage"]`).
default = ["in-memory"]

# Pure in-memory implementations - useful for testing. Carries no extra deps.
in-memory = []

# Persistent implementations that rely on the optional `sled` crate.
sled-storage = ["sled"]

# Postgres-backed storage using sqlx (requires a Tokio runtime).
postgres-storage = ["sqlx"]

[dev-dependencies]
sourcerer-derive = { path = "../sourcerer-derive" }