[package] name = "rings-node" default-run = "rings" description = """ Rings is a structured peer-to-peer network implementation using WebRTC, Chord algorithm, and full WebAssembly (WASM) support. """ readme = "README.md" keywords = ["Chord", "DHT", "Web3", "P2P", "WASM"] categories = ["network-programming", "cryptography", "wasm"] version.workspace = true edition.workspace = true license.workspace = true authors.workspace = true repository.workspace = true [lib] crate-type = ["cdylib", "rlib"] [features] default = ["node_default"] snark = [ "rings-snark", ] ffi = [ "node", "cbindgen", ] node_default = ["node", "snark"] node = [ "tokio", "tokio-util", "hyper", "tower-http", "clap", "reqwest", "form_urlencoded", "pin-project", "async-stream", "backtrace", "lazy_static", "axum/ws", "axum/headers", "rings-core/default", "rings-rpc/std", "rings-derive/default", "rings-transport/native-webrtc", "wasmer/default", "wasmer-types", "home", ] browser_default = ["browser", "snark"] browser = [ "backtrace", "clap", "tracing-wasm", "reqwest-wasm", "rings-core/wasm", "rings-rpc/wasm", "rings-derive/wasm", "rings-transport/web-sys-webrtc", "serde-wasm-bindgen", "wasmer/js-default", "lazy_static", "wasm-bindgen", "wasm-bindgen-futures", "js-sys", ] # run unittest with snark browser_chrome_test = ["browser_default"] [dependencies] anyhow = "1.0.45" arrayref = "0.3.6" async-trait = { workspace = true } base64 = { version = "0.13.0" } bincode = "1.3.3" bytes = { version = "1.2.1", features = ["serde"] } chrono = "0.4.23" dashmap = "5" dotenv = "0.15.0" futures = { version = "0.3.21", features = ["alloc"] } futures-timer = "3.0.2" http = "0.2.6" jsonrpc-core = { workspace = true } log = { version = "0.4", features = ["std"] } rings-core = { workspace = true, optional = true } rings-derive = { workspace = true, optional = true } rings-rpc = { workspace = true, optional = true } rings-snark = { workspace = true, optional = true } rings-transport = { workspace = true } serde = { version = "1.0.136", features = ["derive"] } serde_json = "1.0.70" serde_yaml = "0.9.17" strum = "0.25.0" thiserror = "1" tracing = "0.1.37" tracing-log = "0.1.3" tracing-subscriber = { version = "0.3.15", features = ["ansi"] } uuid = { version = "0.8.2" } wasmer = { version = "4.2.5", optional = true, default-features = false } wasmer-types = { version = "3.3.0", optional = true } # node async-stream = { version = "0.3.2", optional = true } axum = { version = "0.6.10", optional = true } backtrace = { version = "0.3.6", optional = true } clap = { version = "4.0.14", features = ["derive", "env"], optional = true } form_urlencoded = { version = "1.0.1", optional = true } home = { version = "0.5.5", optional = true } hyper = { version = "0.14.25", features = ["full"], optional = true } lazy_static = { version = "1.4.0", optional = true } pin-project = { version = "1", optional = true } reqwest = { version = "0.11", features = ["json", "rustls-tls"], optional = true, default-features = false } tokio = { version = "1.13.0", features = ["full"], optional = true } tokio-util = { version = "0.7.8", optional = true } tower-http = { version = "0.3.4", features = ["cors"], optional = true } # browser console_error_panic_hook = { version = "0.1.1", optional = true } flate2 = "1.0" js-sys = { workspace = true, optional = true } reqwest-wasm = { version = "0.11", features = ["json", "rustls-tls"], optional = true, default-features = false } serde-wasm-bindgen = { workspace = true, optional = true } tracing-wasm = { version = "0.2.1", optional = true } wasm-bindgen = { workspace = true, features = ["serde-serialize"], optional = true } wasm-bindgen-futures = { workspace = true, optional = true } [dev-dependencies] fluvio-wasm-timer = "0.2.5" wasm-bindgen-test = { version = "0.3.0" } [build-dependencies] cbindgen = { version = "0.24.0", optional = true } [[bin]] name = "rings" path = "bin/rings.rs" required-features = ["node"] [package.metadata.wasm-pack.profile.release] wasm-opt = ['-O4']