[package]
name = "braid-core"
version = "0.1.4"
edition = "2021"
description = "Unified Braid Protocol implementation in Rust, including Braid-HTTP, Antimatter CRDT, and BraidFS."
license = "MIT OR Apache-2.0"
repository = "https://github.com/braid-org/braid-rs"
readme = "README.md"
keywords = ["braid", "http", "crdt", "synchronization", "fs"]
categories = ["network-programming", "filesystem", "database-implementations"]
include = [
"src/**/*",
"Cargo.toml",
"README.md",
"LICENSE*",
"examples/**/*",
"tests/**/*",
]
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(feature, values("wchar_conversion", "merge_conflict_checks", "dot_export", "stats", "fuzzing"))',
] }
[features]
default = [
"server",
"client",
"antimatter",
"blob",
"fs",
"smallvec",
"serde",
"native",
]
native = [
"dep:tokio",
"tokio?/full",
"dep:reqwest",
"dep:rusqlite",
"dep:notify",
"dep:clap",
"dep:dirs",
]
server = [
"dep:axum",
"dep:tower",
"dep:tower-http",
"native",
"dep:headers",
"dep:tokio-stream",
"tokio-stream?/net",
"serde",
"smallvec",
]
client = []
antimatter = ["serde", "smallvec"]
blob = ["dep:braid-blob", "serde", "smallvec", "native"]
fs = ["dep:dissimilar", "blob", "serde", "smallvec", "native"]
smallvec = []
serde = ["dep:serde_json"]
serde_json = ["serde"]
lz4 = ["dep:lz4_flex"]
storage = []
gen_test_data = ["lz4"]
nfs = ["dep:nfsserve", "blob", "serde", "smallvec", "native"]
fuzzing = []
[dependencies]
tokio = { workspace = true, optional = true }
tokio-stream = { version = "0.1", optional = true }
http = { workspace = true }
axum = { workspace = true, optional = true }
headers = { version = "0.4", optional = true }
tower = { version = "0.5.2", optional = true }
tower-http = { version = "0.6.8", optional = true }
serde = { workspace = true }
serde_json = { workspace = true, optional = true }
futures = { workspace = true }
async-stream = "0.3"
async-trait = { workspace = true }
async-channel = "2.3"
bytes = { workspace = true }
uuid = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
thiserror = { workspace = true }
anyhow = { workspace = true }
parking_lot = { workspace = true }
base64 = { workspace = true }
url = { workspace = true }
once_cell = { workspace = true }
chrono = { workspace = true }
rand = { workspace = true }
regex = { workspace = true }
percent-encoding = { workspace = true }
smartstring = { workspace = true }
str_indices = "0.4.3"
smallvec = { workspace = true }
lazy_static = "1.4.0"
bumpalo = { version = "3.16.0", features = ["collections"] }
jumprope = "1.1.2"
humansize = "2.0.0"
num_enum = "0.7.2"
crc = "3.0.0"
lz4_flex = { workspace = true, optional = true }
libc = "0.2.139"
reqwest = { workspace = true, optional = true }
rusqlite = { workspace = true, optional = true }
notify = { workspace = true, optional = true }
clap = { workspace = true, optional = true }
dirs = { workspace = true, optional = true }
dissimilar = { workspace = true, optional = true }
sha2 = { workspace = true }
nfsserve = { workspace = true, optional = true }
braid-http = { workspace = true }
braid-blob = { workspace = true, optional = true }
braid-text = { workspace = true, optional = true }
[dev-dependencies]
tokio = { version = "1.0", features = ["full"] }
lz4_flex = { workspace = true }
criterion = "0.5"
rand_chacha = "0.3"
[lib]
path = "src/lib.rs"
crate-type = ["rlib", "cdylib"]