[package]
edition = "2024"
rust-version = "1.85"
name = "beamdb"
version = "0.12.0"
authors = [
"Martti Malmi <martti@mmalmi.org>",
"David Newman <david.r.newman@proton.me>",
]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "BEAM — distributed graph database syncing over WebSocket, WebRTC, and multicast. Successor to rod."
homepage = "https://github.com/guan-tends/beam"
documentation = "https://docs.rs/beamdb"
readme = "README.md"
keywords = [
"p2p",
"graph-database",
"distributed",
"sync",
"websocket",
]
categories = [
"database",
"network-programming",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/guan-tends/beam"
[package.metadata.wasm-pack.profile.release]
wasm-opt = false
[features]
default = ["native"]
native = []
persy = ["dep:persy"]
webrtc = [
"dep:str0m",
"dep:stun",
]
[lib]
name = "beam"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
[[bin]]
name = "beam"
path = "src/main.rs"
required-features = ["native"]
[[bin]]
name = "beam-sea-keygen"
path = "src/bin/beam-sea-keygen.rs"
required-features = ["native"]
[[example]]
name = "dump_redb"
path = "examples/dump_redb.rs"
required-features = ["native"]
[[example]]
name = "encrypted_data"
path = "examples/encrypted_data.rs"
required-features = ["native"]
[[example]]
name = "nested_graph"
path = "examples/nested_graph.rs"
required-features = ["native"]
[[example]]
name = "persistent_storage"
path = "examples/persistent_storage.rs"
required-features = ["native"]
[[example]]
name = "quickstart"
path = "examples/quickstart.rs"
required-features = ["native"]
[[example]]
name = "two_node_sync"
path = "examples/two_node_sync.rs"
required-features = ["native"]
[[example]]
name = "user_auth"
path = "examples/user_auth.rs"
required-features = ["native"]
[[test]]
name = "async_put_e2e"
path = "tests/async_put_e2e.rs"
[[test]]
name = "cross_backend_mesh_e2e"
path = "tests/cross_backend_mesh_e2e.rs"
[[test]]
name = "echo_back_regression"
path = "tests/echo_back_regression.rs"
[[test]]
name = "examples_e2e"
path = "tests/examples_e2e.rs"
[[test]]
name = "ham_stale_relay"
path = "tests/ham_stale_relay.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "local_put_bench"
path = "tests/local_put_bench.rs"
[[test]]
name = "migration_e2e"
path = "tests/migration_e2e.rs"
[[test]]
name = "persy_e2e"
path = "tests/persy_e2e.rs"
[[test]]
name = "quorum_e2e"
path = "tests/quorum_e2e.rs"
[[test]]
name = "relay_throughput_bench"
path = "tests/relay_throughput_bench.rs"
[[test]]
name = "send_metrics_e2e"
path = "tests/send_metrics_e2e.rs"
[[test]]
name = "shutdown_e2e"
path = "tests/shutdown_e2e.rs"
[[test]]
name = "webrtc_datachannel"
path = "tests/webrtc_datachannel.rs"
[[test]]
name = "webrtc_node_sync"
path = "tests/webrtc_node_sync.rs"
[[test]]
name = "wire_live"
path = "tests/wire_live.rs"
[[test]]
name = "wire_tests"
path = "tests/wire_tests.rs"
[[bench]]
name = "my_benchmark"
path = "benches/my_benchmark.rs"
harness = false
required-features = []
[dependencies.aes-gcm]
version = "0.10"
[dependencies.async-trait]
version = "0.1.51"
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1.1.0"
[dependencies.futures-util]
version = "0.3.21"
[dependencies.java-utils]
version = "0.1.0"
[dependencies.log]
version = "0.4.14"
[dependencies.p256]
version = "0.14"
features = [
"ecdh",
"getrandom",
]
[dependencies.parking_lot]
version = "0.12"
[dependencies.pbkdf2]
version = "0.13"
[dependencies.postcard]
version = "1"
features = ["alloc"]
default-features = false
[dependencies.rand]
version = "0.9"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.64"
[dependencies.sha2]
version = "0.11"
[dependencies.size_format]
version = "1.0.2"
[dependencies.thiserror]
version = "2.0"
[dependencies.url]
version = "2.2.2"
[dependencies.web-time]
version = "0.2"
[dependencies.zeroize]
version = "1.7"
[dev-dependencies]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.17.0"
features = ["full"]
[target.'cfg(target_arch = "x86_64")'.dependencies.clap]
version = "4.6"
features = [
"derive",
"env",
]
[target.'cfg(target_arch = "x86_64")'.dependencies.criterion]
version = "0.8"
features = [
"async_futures",
"async_tokio",
"html_reports",
]
[target.'cfg(target_arch = "x86_64")'.dependencies.dirs]
version = "6.0"
[target.'cfg(target_arch = "x86_64")'.dependencies.env_logger]
version = "0.11"
[target.'cfg(target_arch = "x86_64")'.dependencies.http]
version = "1"
[target.'cfg(target_arch = "x86_64")'.dependencies.oko-multicast-socket]
version = "0.5"
features = ["tokio"]
[target.'cfg(target_arch = "x86_64")'.dependencies.persy]
version = "1.8"
features = ["background_ops"]
optional = true
[target.'cfg(target_arch = "x86_64")'.dependencies.redb]
version = "4.1"
[target.'cfg(target_arch = "x86_64")'.dependencies.simd-json]
version = "0.17"
[target.'cfg(target_arch = "x86_64")'.dependencies.str0m]
version = "0.21"
optional = true
[target.'cfg(target_arch = "x86_64")'.dependencies.stun]
version = "0.17"
optional = true
[target.'cfg(target_arch = "x86_64")'.dependencies.tokio-native-tls]
version = "0.3.0"
[target.'cfg(target_arch = "x86_64")'.dependencies.tokio-stream]
version = "0.1.8"
[target.'cfg(target_arch = "x86_64")'.dependencies.tokio-websockets]
version = "0.13"
features = [
"server",
"client",
"native-tls",
"sha1_smol",
"fastrand",
]
[target.wasm32-unknown-unknown.dependencies.console_error_panic_hook]
version = "0.1"
[target.wasm32-unknown-unknown.dependencies.getrandom]
version = "0.2"
features = ["js"]
[target.wasm32-unknown-unknown.dependencies.getrandom_03]
version = "0.3"
features = ["wasm_js"]
package = "getrandom"
[target.wasm32-unknown-unknown.dependencies.getrandom_04]
version = "0.4"
features = ["wasm_js"]
package = "getrandom"
[target.wasm32-unknown-unknown.dependencies.js-sys]
version = "0.3"
[target.wasm32-unknown-unknown.dependencies.tokio]
version = "1.17.0"
features = [
"rt",
"sync",
"macros",
]
default-features = false
[target.wasm32-unknown-unknown.dependencies.tokio_with_wasm]
version = "0.8"
features = [
"time",
"rt",
"sync",
"macros",
]
[target.wasm32-unknown-unknown.dependencies.wasm-bindgen]
version = "0.2"
[target.wasm32-unknown-unknown.dependencies.wasm-bindgen-futures]
version = "0.4"
[target.wasm32-unknown-unknown.dependencies.web-sys]
version = "0.3"
features = [
"WebSocket",
"console",
"MessageEvent",
"ErrorEvent",
"CloseEvent",
"Window",
"IdbFactory",
"Event",
"EventTarget",
"IdbDatabase",
"IdbObjectStore",
"IdbTransaction",
"IdbRequest",
"IdbObjectStoreParameters",
"IdbTransactionMode",
"IdbVersionChangeEvent",
"IdbOpenDbRequest",
"DomStringList",
]
[target.wasm32-unknown-unknown.dev-dependencies.wasm-bindgen-test]
version = "0.3"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true