[package]
name = "sui-id"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
description = "Self-hosted, single-binary OpenID Connect provider in Rust. Install with `cargo install sui-id`."
readme = "../../README.md"

# Restrict what gets uploaded to crates.io. `cargo publish` automatically
# resolves `readme = "../../README.md"` and copies the file into the
# package; we do not need to list it here.
include = [
    "src/**/*",
    "tests/**/*",
    "static/**/*",
    "Cargo.toml",
]

[[bin]]
name = "sui-id"
path = "src/main.rs"

# Integration test binary. The single `e2e` binary aggregates every
# themed module under `tests/e2e/<theme>.rs` so they share helpers
# (`tests/e2e/common.rs`) and a single compile.
[[test]]
name = "e2e"
path = "tests/e2e/main.rs"

[lints]
workspace = true

[dependencies]
sui-id-shared = { version = "0.54.0", path = "../sui-id-shared" }
sui-id-i18n   = { version = "0.54.0", path = "../sui-id-i18n" }
sui-id-store  = { version = "0.54.0", path = "../sui-id-store" }
sui-id-core   = { version = "0.54.0", path = "../sui-id-core" }
sui-id-web    = { version = "0.54.0", path = "../sui-id-web" }

tokio = { workspace = true }
axum = { workspace = true }
axum-extra = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true }
hyper = { workspace = true }
time = "0.3"
cookie = "0.18"

serde = { workspace = true }
serde_json = { workspace = true }
toml = { workspace = true }
thiserror = { workspace = true }
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
tracing-appender = { workspace = true }
chrono = { workspace = true }
uuid = { workspace = true }
url = { workspace = true }
secrecy = { workspace = true }
rand = { workspace = true }
rand_core = { workspace = true }
base64ct = { workspace = true }
chacha20poly1305 = { workspace = true }
argon2 = { workspace = true }
include_dir = { workspace = true }
percent-encoding = { workspace = true }
subtle = { workspace = true }
qrcode = { workspace = true }
webauthn-rs = { workspace = true }
rusqlite = { workspace = true }
tempfile = { workspace = true }

[dev-dependencies]
proptest = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true }
tower = { workspace = true }
serde_json = { workspace = true }
url = { workspace = true }
sha2 = { workspace = true }
base64ct = { workspace = true }
percent-encoding = { workspace = true }
sui-id-store = { version = "0.54.0", path = "../sui-id-store" }
# Re-pull the core crate as a dev-dep with the `test-support`
# feature so e2e tests can construct `InMemoryHibpClient` /
# `InMemoryMailSender` from `core::test_support`. The library
# build of the same crate (no feature) is unaffected.
sui-id-core = { version = "0.54.0", path = "../sui-id-core", features = ["test-support"] }
http = "1"
http-body-util = "0.1"
