braid-core 0.1.4

Unified Braid Protocol implementation in Rust, including Braid-HTTP, Antimatter CRDT, and BraidFS.
Documentation
[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]
# Async Runtime
tokio = { workspace = true, optional = true }
tokio-stream = { version = "0.1", optional = true }
http = { workspace = true }

# Optional Server components
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 }

# Serialization
serde = { workspace = true }
serde_json = { workspace = true, optional = true }

# Async
futures = { workspace = true }
async-stream = "0.3"
async-trait = { workspace = true }
async-channel = "2.3"

# Utilities
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 }

# Diamond-Types dependencies (Vendored)
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"

# Client
reqwest = { workspace = true, optional = true }

# Storage (for blob)
rusqlite = { workspace = true, optional = true }

# Filesystem (for fs)
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"]