[package]
authors = ["Ditto Engineering Team <engineering@ditto.live>"]
categories = ["database-implementations", "external-ffi-bindings", "database"]
description = "This is a support crate for Ditto: dittolive-ditto is the crate we intend for you to interact with."
documentation = "https://ditto.com/link/docs"
edition = "2021"
homepage = "https://www.ditto.live"
keywords = ["sdk", "distributed", "peer-to-peer", "database", "bluetooth"]
license-file = "LICENSE.md"
name = "dittolive-ditto-base"
publish = true
resolver = "2"
version = "4.14.4-preview.3"  # SDK VERSION
rust-version = "1.76"

exclude = ["safer-ffi-internal"]

[features]
default = []
# Any feature-flag that directly depends on this flag is deemed "unstable" and may change or be
# removed without notice, as well as the APIs behind said flags.
experimental-flag = []
experimental-bus = ["experimental-flag", "experimental-pk", "stabby"]
experimental-pk = ["experimental-flag", "experimental-pk-serde"]
experimental-pk-serde = ["experimental-flag"]
# stabby is currently optional until its wasm support improves.
stabby = ["experimental-flag", "dep:stabby", "safer-ffi/stabby"]

[dependencies]
base64.workspace = true
serde.workspace = true
serde_cbor.workspace = true
serde_json.workspace = true
stabby = { workspace = true, optional = true }
thiserror.workspace = true
tokio = { workspace = true, features = ["sync"] }

[dependencies.safer-ffi]
version = "0.2.0-alpha.0" # safer-ffi version
features = [
    # keep in sync with safer-ffi-internal/Cargo.toml's
    "dyn-traits",
]

# This is an internal feature and dependency (not released to crates.io).
[dependencies.safer-ffi-internal]
optional = true
path = "safer-ffi-internal"
package = "cratesio-placeholder-package"
version = "0.0.3-a"

[dev-dependencies]
flume.workspace = true
tokio = { workspace = true, features = ["rt"] }
