Cargo.toml 67 lignes · 2297 octets
[package]
name = "rustwarden-fediverse"
version = "1.2.0"
edition.workspace = true
rust-version.workspace = true
description = "ActivityPub federation for Rustwarden — WebFinger, actor, inbox, HTTP signatures, AP-native auth, cross-instance team invitations"

[dependencies]
rustwarden-core = { path = "../rustwarden-core" }
# Web framework (routes, handlers)
axum = { version = "0.8", features = ["macros"] }
tokio = { version = "1", features = ["full"] }
async-trait = "0.1"
futures = "0.3"
tokio-stream = { version = "0.1", features = ["sync"] }
# Tower middleware
tower = { version = "0.5", features = ["limit", "util"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# Tracing
tracing = "0.1"
# ORM
sea-orm = { version = "2.0.0", features = ["sqlx-postgres", "runtime-tokio-native-tls", "macros"] }
sea-orm-migration = { version = "2.0.0", features = ["sqlx-postgres", "runtime-tokio-native-tls"] }
# Time & identifiers
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1.0", features = ["v4", "serde"] }
# Error handling
thiserror = "2.0"
# Crypto helpers
sha2 = "0.10"
base64 = "0.22"
hex = "0.4"
subtle = "2.6"
rand = { version = "0.9", features = ["std"] }
# URL handling
url = { version = "2", features = ["serde"] }
urlencoding = "2"
# ActivityPub
activitypub_federation = { version = "=0.7.0-beta.11", features = ["axum"], default-features = false }
# HTML sanitization for incoming AP payloads
ammonia = "4"
# RSA actor keys (RFC 0005)
rsa = { version = "0.9", features = ["pem", "getrandom"] }
# Outbound HTTP delivery
reqwest = { version = "0.12", features = ["json", "native-tls"] }
# JWT (claims, validation)
jsonwebtoken = { version = "10", features = ["rust_crypto"] }
# Validation
validator = { version = "0.20", features = ["derive"] }

[lints]
workspace = true

[dev-dependencies]
sea-orm = { version = "2.0.0", features = ["mock"] }
wiremock = "0.6"
# Serialise tests that mutate process-wide environment variables
# (ENCRYPTION_KEY, OAUTH_ENCRYPTION_KEY) so async tests on `MockDatabase`
# cannot trample each other's env. Replaces the ad-hoc `Mutex<()>` lock
# previously held across `.await` in `actor_key_service::tests`.
serial_test = "3"

[[bin]]
name = "migrate-fediverse"
path = "migration/src/main.rs"