[package]
name = "syncular-runtime"
version = "0.1.0"
edition = "2021"
description = "Shared Rust runtime for Syncular SQLite-backed native and browser clients."
license = "Apache-2.0"
repository = "https://github.com/syncular/syncular"
homepage = "https://syncular.dev"
readme = "README.md"
keywords = ["syncular", "sqlite", "offline", "sync"]
categories = ["database", "wasm"]
[lib]
crate-type = ["rlib", "staticlib", "cdylib"]
[features]
default = ["native", "crdt-yjs", "e2ee"]
boltffi-bindings = ["native", "dep:boltffi"]
crdt-yjs = ["dep:base64", "dep:yrs"]
demo-todo-fixture = []
demo-todo-native-fixture = ["native", "demo-todo-fixture"]
e2ee = [
"dep:argon2",
"dep:base64",
"dep:bip39",
"dep:chacha20poly1305",
"dep:hkdf",
"dep:pbkdf2",
"dep:x25519-dalek",
"dep:zeroize",
]
native = [
"dep:diesel",
"dep:flate2",
"dep:libsqlite3-sys",
"dep:reqwest",
"dep:rusqlite",
"dep:tungstenite",
]
web-transport = [
"dep:js-sys",
"dep:serde-wasm-bindgen",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:web-sys",
]
web-blobs = ["web-transport"]
web-client = ["web-transport"]
web-owned-sqlite = ["web-owned-sqlite-core", "web-blobs", "crdt-yjs", "e2ee"]
web-owned-sqlite-core = [
"web-client",
"dep:sqlite-wasm-rs",
"dep:sqlite-wasm-vfs",
]
[dependencies]
anyhow = "1.0"
syncular-protocol = { version = "0.1.0", path = "../protocol" }
argon2 = { version = "0.5", optional = true }
base64 = { version = "0.22", optional = true }
bip39 = { version = "2.1", default-features = false, features = ["std"], optional = true }
boltffi = { version = "0.24.1", optional = true }
chacha20poly1305 = { version = "0.10", features = ["std"], optional = true }
diesel = { version = "2.2", features = ["sqlite", "returning_clauses_for_sqlite_3_35"], optional = true }
flate2 = { version = "1.0", optional = true }
getrandom = "0.2"
hex = "0.4"
hkdf = { version = "0.12", optional = true }
js-sys = { version = "0.3", optional = true }
libsqlite3-sys = { version = "0.37", features = ["bundled"], optional = true }
pbkdf2 = { version = "0.12", optional = true }
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"], optional = true }
rusqlite = { version = "0.39", optional = true }
serde = { version = "1.0", features = ["derive"] }
serde-wasm-bindgen = { version = "0.6", optional = true }
serde_json = "1.0"
sha2 = "0.10"
sqlite-wasm-rs = { version = "0.5", optional = true }
sqlite-wasm-vfs = { version = "0.2", optional = true }
tungstenite = { version = "0.26", default-features = false, features = ["rustls-tls-webpki-roots", "handshake"], optional = true }
wasm-bindgen = { version = "0.2", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
web-sys = { version = "0.3", features = [
"AbortSignal",
"Headers",
"MessageEvent",
"Request",
"RequestInit",
"RequestMode",
"Response",
"Window",
"console",
], optional = true }
x25519-dalek = { version = "2.0", features = ["static_secrets"], optional = true }
yrs = { version = "0.26", optional = true }
zeroize = { version = "1.8", optional = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
uuid = { version = "1.11", features = ["v4"] }
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }
uuid = { version = "1.11", features = ["v4", "js"] }