[package]
edition = "2024"
rust-version = "1.88"
name = "bothy"
version = "0.3.0"
authors = ["The Bothy Contributors"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Serverless, local-first sync engine that uses the user's own cloud storage (Google Drive) as the transport. Early development."
homepage = "https://github.com/bothy-sync/bothy"
documentation = "https://docs.rs/bothy"
readme = "README.md"
keywords = [
"sync",
"local-first",
"offline",
"google-drive",
"hlc",
]
categories = [
"database",
"network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/bothy-sync/bothy"
[features]
blocking = ["tokio/rt-multi-thread"]
crypto = [
"dep:argon2",
"dep:chacha20poly1305",
"dep:zeroize",
]
default = [
"blocking",
"crypto",
"drive",
]
drive = [
"dep:reqwest",
"dep:rustls",
"dep:sha2",
"dep:webpki-roots",
]
test-util = []
[lib]
name = "bothy"
path = "src/lib.rs"
[[test]]
name = "cbor_differential"
path = "tests/cbor_differential.rs"
[[test]]
name = "drive_contract"
path = "tests/drive_contract.rs"
[[test]]
name = "encryption"
path = "tests/encryption.rs"
[[test]]
name = "parsers_never_panic"
path = "tests/parsers_never_panic.rs"
[[test]]
name = "simulation"
path = "tests/simulation.rs"
[[test]]
name = "snapshots"
path = "tests/snapshots.rs"
[[test]]
name = "two_devices"
path = "tests/two_devices.rs"
[dependencies.argon2]
version = "0.6"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.23"
[dependencies.blake3]
version = "1.8"
[dependencies.chacha20poly1305]
version = "0.11"
optional = true
[dependencies.fs4]
version = "1.1"
[dependencies.getrandom]
version = "0.4"
[dependencies.reqwest]
version = "0.13"
features = ["rustls-no-provider"]
optional = true
default-features = false
[dependencies.rusqlite]
version = "0.40"
features = ["bundled"]
[dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
"tls12",
]
optional = true
default-features = false
[dependencies.serde_json]
version = "1"
[dependencies.sha2]
version = "0.11"
optional = true
[dependencies.tokio]
version = "1.54"
features = [
"macros",
"rt",
"sync",
"time",
]
[dependencies.zeroize]
version = "1.9"
optional = true
[dependencies.zstd]
version = "0.14"
[dev-dependencies.ciborium]
version = "0.2"
[dev-dependencies.proptest]
version = "1.12"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1.54"
features = [
"macros",
"rt-multi-thread",
"test-util",
]
[dev-dependencies.wiremock]
version = "0.6"
[target.'cfg(target_os = "android")'.dependencies.webpki-roots]
version = "1.0"
optional = true
[lints.clippy.all]
level = "warn"
priority = -1
[lints.rust]
missing_docs = "warn"
unsafe_code = "forbid"