Revision control

Copy as Markdown

[package]
name = "sync15"
edition = "2021"
version = "0.1.0"
authors = ["Sync Team <sync-team@mozilla.com>"]
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 crates need to implement a "sync engine", but aren't a "sync client" (ie, their
# engine is used by a "sync client".) 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 crates are a "sync client" and do full management/initialization of server storage,
# keys, etc and sync one or more engines. This crate has an engine to manage the "clients"
# collection, so needs the sync-engine feature.
# See the rustdocs in `crate::client` for more information about clients.
sync-client = ["sync-engine", "crypto", "viaduct", "url"]
# Some crates just do their own engine but need to pretend they are a client,
# eg, iOS pre-sync-manager.
# Consider places:
# * It always is going to need to supply a "sync-engine".
# * When used in iOS, due to the lack of sync_manager support, it also needs to
# supply a kind of "sync-client". It is *not* necessary to supply this for Android.
# In a perfect world:
# * places would also have a feature called, say, "sync-client"
# * The code needed for iOS would be behind the "sync-client" feature.
# * The ios megazord would enable the "sync-client" feature, but the android megazord would not.
#
# However, that's not yet the case. This "stand-alone" sync feature is used by crates
# such as places, and is really a marker to help identify the crates which should be
# upgraded to make the sync-client part truly optional.
standalone-sync = ["sync-client"]
[dependencies]
anyhow = "1.0"
base16 = { version = "0.2", optional = true }
base64 = { version = "0.21", optional = true }
error-support = { path = "../support/error" }
ffi-support = "0.4"
interrupt-support = { path = "../support/interrupt" }
lazy_static = "1.4"
log = "0.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 = "1.0"
uniffi = { workspace = true }
url = { version = "2.1", optional = true } # mozilla-central can't yet take 2.2 (see bug 1734538)
viaduct = { path = "../viaduct", optional = true }
[dev-dependencies]
env_logger = { version = "0.10", default-features = false }
[build-dependencies]
uniffi = { workspace = true, features = ["build"] }