iroh-blobs 0.18.0

blob and collection transfer support for iroh
Documentation
[package]
name = "iroh-blobs"
version = "0.18.0"
edition = "2021"
readme = "README.md"
description = "blob and collection transfer support for iroh"
license = "MIT OR Apache-2.0"
authors = ["dignifiedquire <me@dignifiedquire.com>", "n0 team"]
repository = "https://github.com/n0-computer/iroh"
keywords = ["hashing", "quic", "blake3"]

# Sadly this also needs to be updated in .github/workflows/ci.yml
rust-version = "1.76"

[lints]
workspace = true

[dependencies]
anyhow = { version = "1" }
bao-tree = {  version = "0.13", features = ["tokio_fsm", "validate"], default-features = false }
bytes = { version = "1.4", features = ["serde"] }
chrono = "0.4.31"
derive_more = { version = "1.0.0-beta.6", features = ["debug", "display", "deref", "deref_mut", "from", "try_into", "into"] }
flume = "0.11"
futures-buffered = "0.2.4"
futures-lite = "2.3"
genawaiter = { version = "0.99.1", features = ["futures03"] }
hashlink = { version = "0.9.0", optional = true }
hex = "0.4.3"
iroh-base = { version = "0.18.0", features = ["redb"], path = "../iroh-base" }
iroh-io = { version = "0.6.0", features = ["stats"] }
iroh-metrics = { version = "0.18.0", path = "../iroh-metrics", optional = true }
iroh-net = { version = "0.18.0", path = "../iroh-net" }
num_cpus = "1.15.0"
parking_lot = { version = "0.12.1", optional = true }
postcard = { version = "1", default-features = false, features = ["alloc", "use-std", "experimental-derive"] }
rand = "0.8"
range-collections = "0.4.0"
redb = { version = "2.0.0", optional = true }
redb_v1  = { package = "redb", version = "1.5.1", optional = true }
reflink-copy = { version = "0.1.8", optional = true }
self_cell = "1.0.1"
serde = { version = "1", features = ["derive"] }
smallvec = { version = "1.10.0", features = ["serde", "const_new"] }
tempfile = { version = "3.10.0", optional = true }
thiserror = "1"
tokio = { version = "1", features = ["fs"] }
tokio-util = { version = "0.7", features = ["io-util", "io", "rt"] }
tracing = "0.1"
tracing-futures = "0.2.5"

[dev-dependencies]
http-body = "0.4.5"
iroh-blobs = { path = ".", features = ["downloader"] }
iroh-test = { path = "../iroh-test" }
futures-buffered = "0.2.4"
proptest = "1.0.0"
serde_json = "1.0.107"
serde_test = "1.0.176"
tokio = { version = "1", features = ["macros", "test-util"] }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
rcgen = "0.12.0"
rustls = { version = "0.21.11", default-features = false, features = ["quic"] }
tempfile = "3.10.0"
futures-util = "0.3.30"

[dev-dependencies.quinn]
# This allows writing the examples without relying on iroh-net.
# Though as they still depend on iroh-quinn this is perhaps not very
# useful right now.  Changing them is a bit more work however.
package = "iroh-quinn"
version = "0.10"

[features]
default = ["fs-store"]
downloader = ["dep:parking_lot", "tokio-util/time", "dep:hashlink"]
fs-store = ["dep:reflink-copy", "redb", "dep:redb_v1", "dep:tempfile"]
metrics = ["dep:iroh-metrics"]
redb = ["dep:redb"]

[package.metadata.docs.rs]
all-features = true

[[example]]
name = "provide-bytes"

[[example]]
name = "fetch-fsm"

[[example]]
name = "fetch-stream"