[package]
name = "sync15"
edition = "2024"
version = "0.1.0"
license = "MPL-2.0"
exclude = ["/android", "/ios"]

[features]
# The default feature is what mozilla-central wants (we are listed in a `[patch]` section in
# in m-c's top-level Cargo.toml to make updating easier, but you can't specify features there)
default = ["sync-engine"]

random-guid = ["sync-guid/random"]

# Some consumers of this just need our encrypted payloads and no other sync functionality.
crypto = ["rc_crypto", "base16", "base64"]

# Some libraries need to implement a "sync engine", but aren't a "sync client" (ie, their
# engine is used by an external "sync client", like on desktop).
# Engines don't interact directly with the storage servers, nor do they do their own crypto.
# See the rustdocs in `crate::engine` for more information about engines.
sync-engine = ["random-guid"]

# Some libraries are a "sync client" and do full management/initialization of server storage,
# keys, etc and sync one or more engines. This feature will enable this crate to have a `clients`
# engine to manage state in the `clients` collection - thus, it requires the `sync-engine` feature.
# See the rustdocs in `crate::client` for more information about clients.
sync-client = ["sync-engine", "crypto", "viaduct", "url"]

[dependencies]
anyhow = "1.0"
base16 = { version = "0.2", optional = true }
base64 = { version = "0.21", optional = true }
error-support = { path = "../support/error" }
interrupt-support = { path = "../support/interrupt" }
payload-support = { path = "../support/payload" }
lazy_static = "1.4"
rc_crypto = { path = "../support/rc_crypto", features = ["hawk"], optional = true }
serde = { version = "1", features = ["derive"] }
serde_derive = "1"
serde_json = "1"
serde_path_to_error = "0.1"
sync-guid = { path = "../support/guid", features = ["random"] }
thiserror = "2"
uniffi = { version = "0.31" }
url = { version = "2", optional = true }
viaduct = { path = "../viaduct", optional = true }

[dev-dependencies]
error-support = { path = "../support/error", features = ["testing"] }
nss-as = { path = "../support/rc_crypto/nss" }
