[package]
name = "beamdb"
version = "0.17.0"
edition = "2024"
repository = "https://github.com/guan-tends/beam"
homepage = "https://github.com/guan-tends/beam"
documentation = "https://docs.rs/beamdb"
description = "BEAM — distributed graph database syncing over WebSocket, WebRTC, and multicast. Successor to rod."
readme = "README.md"
license = "MIT"
rust-version = "1.85"
authors = ["Martti Malmi <martti@mmalmi.org>", "David Newman <david.r.newman@proton.me>"]
keywords = ["p2p", "graph-database", "distributed", "sync", "websocket"]
categories = ["database", "network-programming", "asynchronous"]
[lib]
name = "beam"
crate-type = ["cdylib", "rlib"]
[dependencies]
web-time = "0.2"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.64"
postcard = { version = "1", default-features = false, features = ["alloc"] }
rand = "0.9"
futures-util = "0.3.21"
async-trait = "0.1.51"
log = "0.4.14"
url = "2.2.2"
thiserror = "2.0"
arena-btreemap = { version = "0.1", features = ["serde"] }
allocator-api2 = "0.4"
bytes = "1.1.0"
rustc-hash = "2.1.3"
size_format = "1.0.2"
zeroize = "1.7"
base64 = "0.22"
java-utils = "0.1.0"
p256 = { version = "0.14", features = ["ecdh", "getrandom"] }
aes-gcm = "0.10"
pbkdf2 = "0.13"
sha2 = "0.11"
parking_lot = "0.12"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
clap = { version = "4.6", features = ["derive", "env"] }
tokio = { version = "1.17.0", features = ["full"] }
[target.'cfg(target_arch = "x86_64")'.dependencies]
simd-json = "0.17"
tokio-stream = "0.1.8"
tokio-websockets = { version = "0.13", features = ["server", "client", "native-tls", "sha1_smol", "fastrand"] }
tokio-native-tls = "0.3.0"
http = "1"
oko-multicast-socket = { version = "0.5", features = ["tokio"] }
redb = "4.1"
persy = { version = "1.8", features = ["background_ops"], optional = true }
fjall = { version = "3", optional = true }
mimalloc = { version = "0.1.52", optional = true }
env_logger = "0.11"
dirs = "6.0"
criterion = { version = "0.8", features=["async_futures", "async_tokio", "html_reports"] }
str0m = { version = "0.21", optional = true }
stun = { version = "0.17", optional = true }
[target.wasm32-unknown-unknown.dependencies]
tokio = { version = "1.17.0", default-features = false, features = ["rt", "sync", "macros"] }
tokio_with_wasm = { version = "0.8", features = ["time", "rt", "sync", "macros"] }
getrandom = { version = "0.2", features = ["js"] }
getrandom_04 = { package = "getrandom", version = "0.4", features = ["wasm_js"] }
getrandom_03 = { package = "getrandom", version = "0.3", features = ["wasm_js"] }
[features]
default = ["native", "mimalloc"]
webrtc = ["dep:str0m", "dep:stun"]
native = []
persy = ["dep:persy"]
fjall = ["dep:fjall"]
mimalloc = ["dep:mimalloc"]
node-fs = []
[dev-dependencies]
[[example]]
name = "dump_redb"
required-features = ["native"]
[[example]]
name = "encrypted_data"
required-features = ["native"]
[[example]]
name = "nested_graph"
required-features = ["native"]
[[example]]
name = "persistent_storage"
required-features = ["native"]
[[example]]
name = "quickstart"
required-features = ["native"]
[[example]]
name = "two_node_sync"
required-features = ["native"]
[[example]]
name = "user_auth"
required-features = ["native"]
[[bench]]
name = "my_benchmark"
harness = false
required-features = []
[[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"]
[profile.release]
opt-level = 3
strip = true
lto = true
codegen-units = 1
[profile.profiling]
inherits = "release"
debug = true
strip = false
[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",
"StorageManager",
"Navigator",
"FileSystemDirectoryHandle",
"FileSystemFileHandle",
"FileSystemWritableFileStream",
"FileSystemGetFileOptions",
"FileSystemGetDirectoryOptions",
"FileSystemRemoveOptions",
"File",
"Blob",
]
[target.wasm32-unknown-unknown.dependencies.wasm-bindgen]
version = "0.2"
[target.wasm32-unknown-unknown.dependencies.js-sys]
version = "0.3"
[target.wasm32-unknown-unknown.dependencies.wasm-bindgen-futures]
version = "0.4"
[target.wasm32-unknown-unknown.dependencies.console_error_panic_hook]
version = "0.1"
[package.metadata.wasm-pack.profile.release]
wasm-opt = false
[target.wasm32-unknown-unknown.dev-dependencies]
wasm-bindgen-test = "0.3"