[workspace]
resolver = "2"
members = ["bobbin/crates/*"]
exclude = ["sites"]

[workspace.package]
version = "0.0.1"
edition = "2024"
rust-version = "1.96"
license = "MIT"
authors = [
    "Lewis <lewis@tangled.org>",
    "Seongmin Lee <git@boltless.me>",
    "oppiliappan <me@oppi.li>",
    "Anirudh Oppiliappan <anirudh@tangled.org>",
    "eti <eti@eti.tf>",
]

[workspace.lints.rust]
unsafe_code = "forbid"
unused_must_use = "deny"

[workspace.lints.clippy]
dbg_macro = "warn"
todo = "warn"
print_stdout = "deny"
print_stderr = "warn"

[workspace.dependencies]
bobbin-types = { path = "bobbin/crates/types" }
bobbin-edge-index = { path = "bobbin/crates/edge-index" }
bobbin-ingest = { path = "bobbin/crates/ingest" }
bobbin-resolver = { path = "bobbin/crates/resolver" }
bobbin-slingshot-client = { path = "bobbin/crates/slingshot-client" }
bobbin-record-lru = { path = "bobbin/crates/record-lru" }
bobbin-knot-proxy = { path = "bobbin/crates/knot-proxy" }
bobbin-runtime = { path = "bobbin/crates/runtime" }
bobbin-search = { path = "bobbin/crates/search" }
bobbin-sim = { path = "bobbin/crates/bobbin-sim" }
bobbin-xrpc = { path = "bobbin/crates/xrpc" }

jacquard-common = "0.12.0-beta.2"
jacquard-derive = "0.12.0-beta.2"
jacquard-lexicon = { version = "0.12.0-beta.2", default-features = false }

anyhow = "1"
miette = "7"
walkdir = "2"

tokio = { version = "1.52", features = ["macros", "rt-multi-thread", "time", "signal", "io-util", "sync"] }
tokio-util = "0.7"
tokio-stream = "0.1"
tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] }
futures = "0.3"
either = "1"

serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["raw_value"] }
serde_ipld_dagcbor = "0.6"

chrono = { version = "0.4", features = ["serde"] }
cid = "0.11"
url = { version = "2", features = ["serde"] }
bytes = "1"

scc = "3"
roaring = "0.11"
lasso = { version = "0.7", features = ["multi-threaded"] }
quick_cache = "0.6"
getrandom = "0.3"
ahash = { version = "0.8", default-features = false, features = ["std"] }

reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-webpki-roots", "http2", "json", "gzip", "stream"] }
axum = "0.8"
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["trace"] }
http = "1"

wiremock = "0.6"

tantivy = "0.26"

tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "json"] }

thiserror = "2"

confique = { version = "0.4", default-features = false, features = ["toml"] }
clap = { version = "4", features = ["derive", "env"] }
toml = { version = "0.9", default-features = false, features = ["parse"] }

[profile.release]
lto = "fat"
strip = true
codegen-units = 1
panic = "abort"

[profile.bench]
debug = 1
strip = false

[profile.profiling]
inherits = "release"
debug = 1
strip = false
lto = "thin"
