[package]
name = "heddle-thread-api"
version.workspace = true
edition.workspace = true
description = "Native Thread clients and durable peer replication over Iroh"
license.workspace = true
repository.workspace = true
[features]
default = ["native", "iroh"]
native = [
"root-attachment",
"source-transfer",
"dep:repo",
"dep:objects",
"dep:crypto",
"dep:biscuit-verifier",
"dep:base64",
"dep:chrono",
"dep:uuid",
"dep:hex",
"dep:tokio",
"dep:tempfile",
]
source-transfer = [
"replication",
"dep:heddle-pack",
"dep:tempfile",
"dep:wire",
"heddle-pack/fs",
]
iroh = ["dep:iroh", "dep:tokio", "dep:heddle-perf-contract"]
replication = ["signing", "dep:heddle-object-model", "dep:tokio", "dep:tracing"]
signing = ["dep:crypto", "dep:hex", "dep:uuid", "dep:getrandom"]
semantic-analysis = ["dep:semantic"]
root-attachment = ["signing", "dep:biscuit-verifier", "dep:base64", "dep:chrono"]
[dependencies]
base64 = { workspace = true, optional = true }
api.workspace = true
semantic = { workspace = true, optional = true }
repo = { workspace = true, optional = true, features = ["native", "git-overlay"] }
objects = { workspace = true, optional = true }
crypto = { workspace = true, optional = true }
heddle-object-model = { workspace = true, optional = true }
heddle-pack = { workspace = true, optional = true }
wire = { workspace = true, optional = true }
biscuit-verifier = { package = "heddle-biscuit-verifier", path = "../biscuit-verifier", version = "0.27.2", optional = true }
chrono = { workspace = true, optional = true }
uuid = { workspace = true, optional = true }
heddle-perf-contract = { workspace = true, optional = true }
blake3.workspace = true
hex = { workspace = true, optional = true }
iroh = { package = "heddleco-iroh", version = "=0.1.0", default-features = false, features = ["tls-ring"], optional = true }
prost = "=0.14.1"
prost-types.workspace = true
thiserror = "=2.0.18"
tokio = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
tempfile = { workspace = true, optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.4", features = ["wasm_js"], optional = true }
uuid = { workspace = true, features = ["js"], optional = true }
[dev-dependencies]
tracing-subscriber.workspace = true
anyhow = "1"
biscuit-auth.workspace = true
ed25519-dalek = "3"
getrandom = "0.4"
hex.workspace = true
tempfile.workspace = true
[[example]]
name = "thread"
required-features = ["iroh", "replication"]
[[example]]
name = "multiplex"
required-features = ["iroh", "replication"]
[[test]]
name = "thread_workflow"
required-features = ["iroh", "replication"]
[[test]]
name = "transport_observation"
required-features = ["iroh", "replication"]
[[test]]
name = "reopen_retry"
required-features = ["replication"]