[package] name = "pkarr" version = "3.6.0" authors = ["Nuh <nuh@nuh.dev>"] edition = "2021" description = "Public-Key Addressable Resource Records (Pkarr); publish and resolve DNS records over Mainline DHT" homepage = "https://pkarr.org" repository = "https://git.pkarr.org" license = "MIT" keywords = ["mainline", "dht", "dns", "decentralized", "identity"] categories = ["network-programming"] [dependencies] base32 = "0.5.1" ed25519-dalek = { version = "2.1.1" } thiserror = "2.0.11" serde = { version = "1.0.217", features = ["derive"] } document-features = "0.2.10" #feat: signed_packet dependencies simple-dns = { version = "0.9.3", optional = true } bytes = { version = "1.10.0", optional = true } self_cell = { version = "1.1.0", optional = true } ntimestamp = { version = "1.0.0", features = ["full"], optional = true } #feat: client dependencies futures-lite = { version = "2.6.0", default-features = false, optional = true , features =["std"]} futures-buffered = { version = "0.2.9", optional = true } dyn-clone = { version = "1.0.18", optional = true } lru = { version = "0.13.0", default-features = false, optional = true } #feat: relay dependencies sha1_smol = { version = "1.0.1", optional = true } url = { version = "2.5.4", optional = true } # feat: endpoints dependencies genawaiter = { version = "0.99.1", default-features = false, features = ["futures03"], optional = true } [target.'cfg(not(target_family = "wasm"))'.dependencies] getrandom = { version = "0.2.15", default-features = false } #feat: client dependencies tracing = { version = "0.1.41", optional = true } # feat: dht dependencies mainline = { version = "5.3.1", optional = true } # feat: relay dependencies reqwest = { version = "0.12.13", default-features = false, features = ["rustls-tls"], optional = true } tokio = { version = "1.43.0", default-features = false, optional = true } async-compat = { version = "0.2.4", optional = true } # feat: lmdb-cache defendencies heed = { version = "0.21.0", default-features = false, optional = true } byteorder = { version = "1.5.0", default-features = false, optional = true } page_size = { version = "0.6.0", optional = true } # feat: tls rustls = { version = "0.23", default-features = false, features = ["ring", "std"], optional = true } webpki = { package = "rustls-webpki", version = "0.102", optional = true } [target.wasm32-unknown-unknown.dependencies] getrandom = { version = "0.2.15", default-features = false, features = ["js"] } #feat: client dependencies log = { version = "0.4.25", optional = true} wasm-bindgen-futures = { version = "0.4.50", optional = true } # feat: relay dependencies reqwest = { version = "0.12.13", default-features = false, optional = true } [dev-dependencies] anyhow = "1.0.95" postcard = { version = "1.1.1", features = ["alloc"] } reqwest = "0.12.13" rstest = "0.24.0" [target.'cfg(not(target_family = "wasm"))'.dev-dependencies] pkarr-relay = { path = "../relay" } clap = { version = "4.5.29", features = ["derive"] } tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } mainline = "5.3.1" tokio-rustls = "0.26.1" axum = "0.8.1" axum-server = { version = "0.7.1", features = ["tls-rustls-no-provider"] } tokio = { version = "1.43.0", features = ["macros", "rt-multi-thread"] } [target.wasm32-unknown-unknown.dev-dependencies] wasm-bindgen = { version = "0.2.100", features = ["serde-serialize"] } wasm-bindgen-test = "0.3" console_log = { version = "1.0.0", features = ["color"] } [build-dependencies] cfg_aliases = "0.2.1" [features] # Basic types keys = [] signed_packet = ["keys", "dep:simple-dns", "dep:ntimestamp", "dep:bytes", 'dep:self_cell'] # Clients ## Enable the [Client] with [mainline] support. dht = ["dep:mainline", "__client"] ## Enables [Client] with [Relays](https://pkarr.org/relays). relays = ["dep:url", "dep:reqwest", "dep:futures-buffered", "__client"] # Extra ## Use [LmdbCache][extra::lmdb_cache::LmdbCache] implementation. Only available if the `client` module is enabled. lmdb-cache = ["__client", "dep:heed", "dep:byteorder", "dep:page_size"] ## Enables [endpoints](https://pkarr.org/endpoints) spec. ## ## Only available if the `client` module is enabled. endpoints = ["__client", "dep:genawaiter"] ## Enables [tls](https://pkarr.org/tls) spec. ## ## Only available if the `client` module is enabled. tls = ["endpoints", "ed25519-dalek/pkcs8", "dep:webpki", "dep:rustls"] ## Use [reqwest::dns::Resolve] trait implementation for [Client]. ## ## Only available if the `client` module is enabled. reqwest-resolve = ["endpoints", "dep:reqwest"] ## Create a [reqwest::ClientBuilder] from [Client]. ## ## Only available if the `client` module is enabled. reqwest-builder = ["tls", "reqwest-resolve"] # Combinations ## Use all features full-client = ["dht", "relays"] ## Extra features that might benefit most but not all developers building apps using Pkarr. ## ## Only available if the `client` module is enabled. extra = ["endpoints", "lmdb-cache", "reqwest-resolve", "tls", "reqwest-builder"] ## Use all features including the `full-client` and `extra` features. full = ["full-client", "extra"] default = ["full-client"] ## Enable client dependencies. ## ## Does not enable anything on its own you need to enable either `dht` and/or `relays` to enable the [Client]. ## ## Except in WASM where you have to enable `relays`, while `dht` does not do anything. __client = [ "signed_packet", "dep:dyn-clone", "dep:lru", "dep:sha1_smol", "dep:futures-lite", "dep:async-compat", "dep:tokio", "dep:log", "dep:tracing", "dep:wasm-bindgen-futures", ] [package.metadata.docs.rs] all-features = true [[example]] name = "http-get" required-features = ["reqwest-builder"] [[example]] name = "http-serve" required-features = ["tls"]