[package]
edition = "2021"
name = "distributed"
version = "4.0.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "CQRS/ES framework for Rust using Plain Old Rust Structs — append-only events, replay, snapshots, outbox, service bus, and pluggable infrastructure"
readme = "README.md"
keywords = [
"event-sourcing",
"cqrs",
"ddd",
"aggregate",
"domain-driven-design",
]
categories = [
"data-structures",
"database",
]
license = "MIT"
repository = "https://github.com/patrickleet/distributed"
[features]
application-runtime = []
default = []
emitter = ["dep:event-emitter-rs"]
graphql = [
"dep:async-graphql",
"dep:async-graphql-axum",
"dep:hmac",
"dep:jsonwebtoken",
"http",
"axum?/ws",
]
grpc = [
"dep:tonic",
"dep:tonic-prost",
"dep:prost",
"dep:tokio",
]
http = [
"dep:axum",
"dep:reqwest",
"dep:tokio",
]
kafka = [
"dep:rdkafka",
"dep:tokio",
]
metrics = []
nats = [
"dep:async-nats",
"dep:futures",
"dep:tokio",
]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:tracing",
"dep:tracing-opentelemetry",
]
postgres = [
"dep:sqlx",
"dep:tokio",
"sqlx/postgres",
"sqlx/migrate",
"sqlx/runtime-tokio",
"sqlx/json",
]
rabbitmq = [
"dep:lapin",
"dep:futures",
"dep:tokio",
]
runtime = ["application-runtime"]
sqlite = [
"dep:sqlx",
"dep:tokio",
"sqlx/migrate",
"sqlx/runtime-tokio",
"sqlx/sqlite",
"sqlx/json",
]
[lib]
name = "distributed"
path = "src/lib.rs"
[[example]]
name = "graphiql"
path = "examples/graphiql.rs"
required-features = [
"graphql",
"sqlite",
]
[[test]]
name = "application_composition"
path = "tests/application_composition.rs"
[[test]]
name = "application_plans"
path = "tests/application_plans.rs"
[[test]]
name = "bomberman"
path = "tests/bomberman/main.rs"
[[test]]
name = "distributed_read_model"
path = "tests/distributed_read_model/main.rs"
[[test]]
name = "distributed_read_model_board"
path = "tests/distributed_read_model_board/main.rs"
[[test]]
name = "domain_event_projection_server"
path = "tests/domain_event_projection_server.rs"
[[test]]
name = "durable_enqueue_sqlite"
path = "tests/durable_enqueue_sqlite/main.rs"
[[test]]
name = "enqueue"
path = "tests/enqueue/main.rs"
[[test]]
name = "event_store"
path = "tests/event_store/main.rs"
[[test]]
name = "graphql_causal_transport"
path = "tests/graphql_causal_transport/main.rs"
[[test]]
name = "graphql_commands"
path = "tests/graphql_commands/main.rs"
[[test]]
name = "graphql_compile"
path = "tests/graphql_compile/main.rs"
[[test]]
name = "graphql_engine"
path = "tests/graphql_engine/main.rs"
[[test]]
name = "graphql_harden"
path = "tests/graphql_harden/main.rs"
[[test]]
name = "graphql_http"
path = "tests/graphql_http/main.rs"
[[test]]
name = "graphql_identity"
path = "tests/graphql_identity/main.rs"
[[test]]
name = "graphql_oidc_authentik"
path = "tests/graphql_oidc_authentik/main.rs"
[[test]]
name = "graphql_oidc_keycloak"
path = "tests/graphql_oidc_keycloak/main.rs"
[[test]]
name = "graphql_oidc_zitadel"
path = "tests/graphql_oidc_zitadel/main.rs"
[[test]]
name = "graphql_postgres"
path = "tests/graphql_postgres/main.rs"
[[test]]
name = "graphql_query_protocol"
path = "tests/graphql_query_protocol/main.rs"
[[test]]
name = "graphql_query_protocol_postgres"
path = "tests/graphql_query_protocol_postgres/main.rs"
[[test]]
name = "graphql_sdl"
path = "tests/graphql_sdl/main.rs"
[[test]]
name = "graphql_sqlite"
path = "tests/graphql_sqlite/main.rs"
[[test]]
name = "graphql_subscriptions_sqlite"
path = "tests/graphql_subscriptions_sqlite/main.rs"
[[test]]
name = "in_memory_repository_conformance"
path = "tests/in_memory_repository_conformance/main.rs"
[[test]]
name = "kafka_transport"
path = "tests/kafka_transport/main.rs"
[[test]]
name = "knative_cloudevents"
path = "tests/knative_cloudevents/main.rs"
[[test]]
name = "legacy_authoring_absence"
path = "tests/legacy_authoring_absence.rs"
[[test]]
name = "metrics_exposition"
path = "tests/metrics_exposition/main.rs"
[[test]]
name = "microsvc"
path = "tests/microsvc/main.rs"
[[test]]
name = "nats_transport"
path = "tests/nats_transport/main.rs"
[[test]]
name = "otel_export"
path = "tests/otel_export/main.rs"
[[test]]
name = "postgres_repository"
path = "tests/postgres_repository/main.rs"
[[test]]
name = "postgres_repository_conformance"
path = "tests/postgres_repository_conformance/main.rs"
[[test]]
name = "postgres_transport"
path = "tests/postgres_transport/main.rs"
[[test]]
name = "queued_repo"
path = "tests/queued_repo/main.rs"
[[test]]
name = "rabbitmq_transport"
path = "tests/rabbitmq_transport/main.rs"
[[test]]
name = "read_model_commit_bridge"
path = "tests/read_model_commit_bridge/main.rs"
[[test]]
name = "read_model_metadata"
path = "tests/read_model_metadata/main.rs"
[[test]]
name = "read_model_relationship_includes"
path = "tests/read_model_relationship_includes/main.rs"
[[test]]
name = "read_model_schema_bootstrap"
path = "tests/read_model_schema_bootstrap/main.rs"
[[test]]
name = "read_model_session"
path = "tests/read_model_session/main.rs"
[[test]]
name = "replay_property"
path = "tests/replay_property/main.rs"
[[test]]
name = "repository_api"
path = "tests/repository_api/main.rs"
[[test]]
name = "sagas"
path = "tests/sagas/main.rs"
[[test]]
name = "snapshot_sqlite_hardening"
path = "tests/snapshot_sqlite_hardening/main.rs"
[[test]]
name = "snapshots"
path = "tests/snapshots/main.rs"
[[test]]
name = "sourced"
path = "tests/sourced/main.rs"
[[test]]
name = "sourced_enqueue"
path = "tests/sourced_enqueue/main.rs"
[[test]]
name = "sourced_snapshot"
path = "tests/sourced_snapshot/main.rs"
[[test]]
name = "sourced_upcasting"
path = "tests/sourced_upcasting/main.rs"
[[test]]
name = "sql_lock_manager"
path = "tests/sql_lock_manager/main.rs"
[[test]]
name = "sqlite_repository"
path = "tests/sqlite_repository/main.rs"
[[test]]
name = "sqlite_repository_conformance"
path = "tests/sqlite_repository_conformance/main.rs"
[[test]]
name = "sqlite_transport"
path = "tests/sqlite_transport/main.rs"
[[test]]
name = "todos"
path = "tests/todos/main.rs"
[[test]]
name = "transport_in_memory"
path = "tests/transport_in_memory/main.rs"
[[test]]
name = "typed_commands"
path = "tests/typed_commands/main.rs"
[[test]]
name = "upcasting"
path = "tests/upcasting/main.rs"
[dependencies.async-graphql]
version = "7"
optional = true
[dependencies.async-graphql-axum]
version = "7"
optional = true
[dependencies.async-nats]
version = "0.49"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.base64]
version = "0.22.1"
[dependencies.bitcode]
version = "0.6.9"
features = ["serde"]
[dependencies.distributed_macros]
version = "4.0.0"
[dependencies.event-emitter-rs]
version = "0.1.4"
optional = true
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.futures-util]
version = "0.3"
features = ["alloc"]
default-features = false
[dependencies.hmac]
version = "0.12"
optional = true
[dependencies.jsonwebtoken]
version = "9"
optional = true
[dependencies.lapin]
version = "4"
optional = true
[dependencies.opentelemetry]
version = "0.32"
features = ["trace"]
optional = true
default-features = false
[dependencies.opentelemetry_sdk]
version = "0.32"
features = ["trace"]
optional = true
default-features = false
[dependencies.prost]
version = "0.14"
optional = true
[dependencies.rdkafka]
version = "0.39"
features = [
"cmake-build",
"tokio",
]
optional = true
[dependencies.reqwest]
version = "0.13"
features = ["rustls"]
optional = true
default-features = false
[dependencies.serde]
version = "1.0.210"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.128"
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.9"
optional = true
default-features = false
[dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"net",
"macros",
"time",
"sync",
]
optional = true
[dependencies.tonic]
version = "0.14"
features = [
"router",
"transport",
"codegen",
]
optional = true
default-features = false
[dependencies.tonic-prost]
version = "0.14"
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.tracing-opentelemetry]
version = "0.33"
optional = true
default-features = false
[dependencies.uuid]
version = "1"
features = ["v7"]
[dev-dependencies.axum]
version = "0.8"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.opentelemetry-otlp]
version = "0.32"
features = [
"trace",
"http-proto",
"reqwest-blocking-client",
]
default-features = false
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.prost]
version = "0.14"
[dev-dependencies.rand]
version = "0.8"
[dev-dependencies.reqwest]
version = "0.13"
features = ["json"]
[dev-dependencies.rsa]
version = "0.9"
[dev-dependencies.serde_json]
version = "1.0"
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"test-util",
]
[dev-dependencies.tokio-stream]
version = "0.1"
[dev-dependencies.tokio-tungstenite]
version = "0.29"
[dev-dependencies.tonic]
version = "0.14"
features = [
"router",
"transport",
"codegen",
]
default-features = false
[dev-dependencies.tower]
version = "0.5"
features = ["util"]
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"registry",
"std",
]
default-features = false
[build-dependencies.serde]
version = "1.0.210"
features = ["derive"]
[build-dependencies.serde_json]
version = "1.0.128"
[build-dependencies.sha2]
version = "0.10"
[build-dependencies.tonic-build]
version = "0.14"
features = ["transport"]
default-features = false