[workspace]
resolver = "2"
members = [
    "crates/tranquil-types",
    "crates/tranquil-config",
    "crates/tranquil-infra",
    "crates/tranquil-crypto",
    "crates/tranquil-storage",
    "crates/tranquil-cache",
    "crates/tranquil-ripple",
    "crates/tranquil-repo",
    "crates/tranquil-scopes",
    "crates/tranquil-auth",
    "crates/tranquil-oauth",
    "crates/tranquil-comms",
    "crates/tranquil-db-traits",
    "crates/tranquil-db",
    "crates/tranquil-pds",
    "crates/tranquil-server",
    "crates/tranquil-sync",
    "crates/tranquil-oauth-server",
    "crates/tranquil-api",
    "crates/tranquil-lexicon",
    "crates/tranquil-signal",
    "crates/tranquil-store",
]

[workspace.package]
version = "0.6.6"
edition = "2024"
license = "AGPL-3.0-or-later"

[workspace.dependencies]
tranquil-types = { path = "crates/tranquil-types" }
tranquil-config = { path = "crates/tranquil-config" }
tranquil-infra = { path = "crates/tranquil-infra" }
tranquil-crypto = { path = "crates/tranquil-crypto" }
tranquil-storage = { path = "crates/tranquil-storage" }
tranquil-cache = { path = "crates/tranquil-cache" }
tranquil-repo = { path = "crates/tranquil-repo" }
tranquil-scopes = { path = "crates/tranquil-scopes" }
tranquil-auth = { path = "crates/tranquil-auth" }
tranquil-oauth = { path = "crates/tranquil-oauth" }
tranquil-comms = { path = "crates/tranquil-comms" }
tranquil-db-traits = { path = "crates/tranquil-db-traits" }
tranquil-db = { path = "crates/tranquil-db" }
tranquil-ripple = { path = "crates/tranquil-ripple" }
tranquil-lexicon = { path = "crates/tranquil-lexicon" }
tranquil-pds = { path = "crates/tranquil-pds" }
tranquil-sync = { path = "crates/tranquil-sync" }
tranquil-oauth-server = { path = "crates/tranquil-oauth-server" }
tranquil-api = { path = "crates/tranquil-api" }
tranquil-signal = { path = "crates/tranquil-signal", features = ["fjall-store"] }
tranquil-store = { path = "crates/tranquil-store" }

presage = { git = "https://github.com/whisperfish/presage", rev = "fe3ed54c4844ae51c3a9fa49cf80a7816a31a425", default-features = false }

unicode-segmentation = "1"

aes-gcm = "0.10"
arc-swap = "1"
backon = "1"
bincode = { version = "2", features = ["serde"] }
anyhow = "1.0"
async-trait = "0.1"
aws-config = "1.8"
aws-sdk-s3 = "1.118"
axum = { version = "0.8", features = ["ws", "macros"] }
base32 = "0.5"
base64 = "0.22"
bcrypt = "0.17"
bs58 = "0.5"
bytes = "1.11"
chrono = { version = "0.4", features = ["serde"] }
cid = "0.11"
clap = { version = "4", features = ["derive", "env"] }
confique = { version = "0.4", features = ["toml"] }
dotenvy = "0.15"
ed25519-dalek = { version = "2.1", features = ["pkcs8"] }
foca = { version = "1", features = ["bincode-codec", "tracing"] }
futures = "0.3"
futures-util = "0.3"
governor = "0.10"
h3 = "0.0.8"
h3-quinn = "0.0.10"
hex = "0.4"
hickory-resolver = { version = "0.24", features = ["tokio-runtime"] }
hkdf = "0.12"
hmac = "0.12"
http = "1.4"
hyper = { version = "1", features = ["server", "http1", "http2"] }
hyper-util = { version = "0.1", features = ["server", "server-auto", "server-graceful", "service", "tokio"] }
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
qrcodegen = "1.8"
infer = "0.19"
ipld-core = "0.4"
iroh-car = "0.5"
jacquard-common = { version = "0.9", features = ["crypto-k256"] }
jacquard-repo = "0.9"
lettre = { version = "0.11", default-features = false, features = ["builder", "smtp-transport", "tokio1", "tokio1-rustls-tls", "pool", "dkim", "tracing"] }
jsonwebtoken = { version = "10.2", features = ["rust_crypto"] }
k256 = { version = "0.13", features = ["ecdsa", "pem", "pkcs8"] }
metrics = "0.24"
metrics-exporter-prometheus = { version = "0.16", default-features = false, features = ["http-listener"] }
multibase = "0.9"
parking_lot = "0.12"
multihash = "0.19"
p256 = { version = "0.13", features = ["ecdsa"] }
p384 = { version = "0.13", features = ["ecdsa"] }
quinn = { version = "0.11", default-features = false, features = ["runtime-tokio", "rustls-ring", "log"] }
rand = "0.8"
rcgen = { version = "0.14", default-features = false, features = ["ring", "pem"] }
redis = { version = "1.0", features = ["tokio-comp", "connection-manager"] }
regex = "1"
rsa = "0.9"
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] }
rustls-pemfile = "2"
secrecy = { version = "0.10", features = ["serde"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls-webpki-roots", "http2", "charset", "macos-system-configuration"] }
serde = { version = "1.0", features = ["derive"] }
serde_bytes = "0.11"
serde_ipld_dagcbor = "0.6"
serde_json = "1.0"
serde_urlencoded = "0.7"
sha2 = "0.10"
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "uuid", "chrono", "json"] }
subtle = "2.5"
thiserror = "2.0"
tokio = { version = "1.48", features = ["macros", "rt-multi-thread", "time", "signal", "process", "io-util", "fs"] }
tokio-util = { version = "0.7.18", features = ["rt"] }
tokio-tungstenite = { version = "0.28", features = ["rustls-tls-webpki-roots"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12", "logging"] }
totp-rs = { version = "5", features = ["qr"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["fs", "cors"] }
tower-layer = "0.3"
tracing = "0.1"
tracing-subscriber = "0.3"
urlencoding = "2.1"
url = "2.5"
uuid = { version = "1.19", features = ["v4", "v5", "v7", "fast-rng", "serde"] }
webauthn-rs = { version = "0.5", features = ["danger-allow-state-serialisation", "danger-user-presence-only-security-keys", "conditional-ui"] }
webauthn-rs-proto = "0.5"
x509-parser = "0.18"

ciborium = "0.2"
ctor = "0.6"
testcontainers = "0.26"
testcontainers-modules = { version = "0.14", features = ["postgres"] }
wiremock = "0.6"

[patch.crates-io]
curve25519-dalek = { git = "https://github.com/signalapp/curve25519-dalek", tag = "signal-curve25519-4.1.3" }

[profile.release]
opt-level = "s"
strip = true
panic = "abort"
codegen-units = 256

[profile.lewis]
inherits = "release"
opt-level = 3
lto = "fat"
codegen-units = 1

[profile.bench]
opt-level = 3
lto = "fat"
codegen-units = 1
debug = 1
strip = false
