[package]
name = "mwc-libp2p"
edition = "2018"
description = "Peer-to-peer networking library"
version = "0.35.2"
authors = ["Parity Technologies <admin@parity.io>"]
license = "MIT"
repository = "https://github.com/mwcproject/rust-libp2p"
keywords = ["peer-to-peer", "libp2p", "networking"]
categories = ["network-programming", "asynchronous"]

[features]
default = [
    "deflate",
    "dns",
    "floodsub",
    "identify",
    "kad",
    "gossipsub",
    "mdns",
    "mplex",
    "noise",
    "ping",
    "plaintext",
    "pnet",
    "request-response",
    "secp256k1",
    "tcp-async-io",
    "uds",
    "wasm-ext",
    "websocket",
    "yamux",
]
deflate = ["libp2p-deflate"]
dns = ["libp2p-dns"]
floodsub = ["libp2p-floodsub"]
identify = ["libp2p-identify"]
kad = ["libp2p-kad"]
gossipsub = ["libp2p-gossipsub"]
mdns = ["libp2p-mdns"]
mplex = ["libp2p-mplex"]
noise = ["mwc-libp2p-noise"]
ping = ["libp2p-ping"]
plaintext = ["libp2p-plaintext"]
pnet = ["libp2p-pnet"]
request-response = ["libp2p-request-response"]
tcp-async-io = ["libp2p-tcp", "libp2p-tcp/async-io"]
tcp-tokio = ["libp2p-tcp", "libp2p-tcp/tokio"]
uds = ["libp2p-uds"]
wasm-ext = ["libp2p-wasm-ext"]
wasm-ext-websocket = ["wasm-ext", "libp2p-wasm-ext/websocket"]
websocket = ["libp2p-websocket"]
yamux = ["libp2p-yamux"]
secp256k1 = ["libp2p-core/secp256k1"]

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

[dependencies]
atomic = "0.5.0"
bytes = "1"
futures = "0.3.1"
lazy_static = "1.2"
libp2p-core = { version = "0.27.1", path = "core" }
libp2p-floodsub = { version = "0.27.0", path = "protocols/floodsub", optional = true }
libp2p-gossipsub = { version = "0.28.0", path = "./protocols/gossipsub", optional = true }
libp2p-identify = { version = "0.27.0", path = "protocols/identify", optional = true }
libp2p-kad = { version = "0.28.1", path = "protocols/kad", optional = true }
libp2p-mplex = { version = "0.27.1", path = "muxers/mplex", optional = true }
mwc-libp2p-noise = { version = "0.29.1", path = "transports/noise", optional = true }
libp2p-ping = { version = "0.27.0", path = "protocols/ping", optional = true }
libp2p-plaintext = { version = "0.27.1", path = "transports/plaintext", optional = true }
libp2p-pnet = { version = "0.20.0", path = "transports/pnet", optional = true }
libp2p-request-response = { version = "0.9.1", path = "protocols/request-response", optional = true }
libp2p-swarm = { version = "0.27.2", path = "swarm" }
libp2p-swarm-derive = { version = "0.22.0", path = "swarm-derive" }
libp2p-uds = { version = "0.27.0", path = "transports/uds", optional = true }
libp2p-wasm-ext = { version = "0.27.0", path = "transports/wasm-ext", optional = true }
libp2p-yamux = { version = "0.30.1", path = "muxers/yamux", optional = true }
multiaddr = { package = "parity-multiaddr", version = "0.11.1", path = "misc/multiaddr" }
parking_lot = "0.11.0"
pin-project = "1.0.0"
smallvec = "1.0"
wasm-timer = "0.2.4"

[target.'cfg(not(any(target_os = "emscripten", target_os = "wasi", target_os = "unknown")))'.dependencies]
libp2p-deflate = { version = "0.27.1", path = "transports/deflate", optional = true }
libp2p-dns = { version = "0.27.0", path = "transports/dns", optional = true }
libp2p-mdns = { version = "0.28.1", path = "protocols/mdns", optional = true }
libp2p-tcp = { version = "0.27.1", path = "transports/tcp", optional = true }
libp2p-websocket = { version = "0.28.0", path = "transports/websocket", optional = true }

[dev-dependencies]
async-std = { version = "1.6.2", features = ["attributes"] }
env_logger = "0.8.1"
tokio = { version = "1.0.1", features = ["io-util", "io-std", "macros", "rt", "rt-multi-thread"] }

[workspace]
members = [
    "core",
    "misc/multiaddr",
    "misc/multistream-select",
    "misc/peer-id-generator",
    "muxers/mplex",
    "muxers/yamux",
    "protocols/floodsub",
    "protocols/gossipsub",
    "protocols/identify",
    "protocols/kad",
    "protocols/mdns",
    "protocols/ping",
    "protocols/request-response",
    "swarm",
    "swarm-derive",
    "transports/deflate",
    "transports/dns",
    "transports/noise",
    "transports/plaintext",
    "transports/pnet",
    "transports/tcp",
    "transports/uds",
    "transports/websocket",
    "transports/wasm-ext"
]

[[example]]
name = "chat-tokio"
required-features = ["tcp-tokio", "mdns"]
