[package]
name = "stately"
description = "Type-safe state management with entity relationships and CRUD operations"
keywords.workspace = true
categories.workspace = true
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
[package.metadata.docs.rs]
all-features = true
[features]
default = ["openapi"]
openapi = ["dep:utoipa"]
axum = ["openapi", "dep:axum", "dep:tokio", "dep:tower-http"]
[dependencies]
hashbrown = { version = "0.16", features = [
"allocator-api2",
"default",
"inline-more",
"serde",
] }
serde = { version = "1", features = ["derive", "std", "rc"] }
serde_json = "1"
thiserror = "2"
uuid = { version = "1", features = ["v7", "serde"] }
axum = { version = "0.8", optional = true }
tokio = { version = "1", features = ["sync"], optional = true }
tower-http = { version = "0.6", features = ["compression-gzip"], optional = true }
utoipa = { version = "5", features = ["macros", "uuid", "rc_schema"], optional = true }
stately-derive = { path = "../stately-derive", version = "0.3.2" }
[dev-dependencies]
tower = { version = "0.5", features = ["util"] }
tokio = { version = "1", features = ["sync", "rt-multi-thread", "macros"] }
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
large_futures = "warn"
clone_on_ref_ptr = "warn"
must_use_candidate = "allow"
[lints.rust]
unused_imports = "deny"
elided_lifetimes_in_paths = "deny"
explicit_outlives_requirements = "warn"
let_underscore_drop = "warn"
missing_copy_implementations = "warn"
redundant_lifetimes = "warn"
rust_2024_incompatible_pat = "warn"
single_use_lifetimes = "warn"
trivial_numeric_casts = "warn"
unit_bindings = "warn"
unnameable_types = "warn"
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "warn"
unused_crate_dependencies = "warn"
unused_import_braces = "warn"
unused_lifetimes = "warn"
unused_macro_rules = "warn"
unused_results = "warn"
unused_qualifications = "warn"
variant_size_differences = "warn"
[[test]]
name = "core"
[[test]]
name = "axum"
required-features = ["axum"]
[[test]]
name = "foreign"
[[example]]
name = "basic"
required-features = ["openapi"]
[[example]]
name = "axum_api"
required-features = ["axum"]
[[example]]
name = "doc_expand"
required-features = ["axum"]