[package] name = "kv-ffi" description = "UniFFI bindings: the single API surface used by Swift, Kotlin and the Tauri app." version.workspace = true edition.workspace = true license.workspace = true publish.workspace = true [lib] crate-type = ["lib", "staticlib", "cdylib"] name = "kv_ffi" [[bin]] name = "uniffi-bindgen" path = "src/bin/uniffi-bindgen.rs" [dependencies] kv-proto.workspace = true kv-crypto.workspace = true kv-model = { workspace = true, features = ["psl"] } kv-store.workspace = true kv-sync.workspace = true kv-import.workspace = true serde.workspace = true base64.workspace = true hkdf.workspace = true sha2.workspace = true tokio = { workspace = true } uuid.workspace = true thiserror.workspace = true serde_json.workspace = true zeroize.workspace = true uniffi = { workspace = true, features = ["cli", "tokio"] } # browser-bridge: the app side of the browser extension protocol (pairing channel, broker, local IPC). kv-ipc = { path = "../kv-ipc", optional = true } x25519-dalek = { version = "2", features = ["static_secrets", "zeroize"], optional = true } aes-gcm = { version = "0.10", optional = true } getrandom = { version = "0.2", optional = true } url = { workspace = true, optional = true } [features] # Serves the browser extension through kestrove-nmh: on in the macOS app (via the Apple build) and the desktop app. browser-bridge = ["dep:kv-ipc", "dep:x25519-dalek", "dep:aes-gcm", "dep:getrandom", "dep:url", "uuid/v4"] [dev-dependencies] kv-sync = { workspace = true, features = ["test-server"] } tempfile.workspace = true p256.workspace = true ciborium.workspace = true zip = { version = "9", default-features = false, features = ["deflate-flate2"] }