[package]
edition = "2024"
rust-version = "1.85"
name = "oxide_core"
version = "0.4.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust engine primitives for Oxide (store, snapshot streams, error model, optional persistence)."
homepage = "https://github.com/Oxide-Stack/Oxide"
documentation = "https://docs.rs/oxide_core"
readme = "README.md"
keywords = [
"oxide",
"state-management",
"redux",
"async",
"ffi",
]
categories = [
"asynchronous",
"concurrency",
"api-bindings",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/Oxide-Stack/Oxide"
[features]
default = ["frb-spawn"]
frb-spawn = ["dep:flutter_rust_bridge"]
full = [
"state-persistence",
"persistence-json",
"frb-spawn",
"isolated-channels",
]
isolated-channels = []
navigation-binding = [
"dep:serde",
"dep:serde_json",
]
persistence-json = [
"state-persistence",
"dep:serde_json",
]
state-persistence = [
"dep:serde",
"dep:bincode",
]
[lib]
name = "oxide_core"
path = "src/lib.rs"
[[test]]
name = "navigation_runtime_tests"
path = "tests/navigation_runtime_tests.rs"
[[test]]
name = "persistence_corrupt_data"
path = "tests/persistence_corrupt_data.rs"
[[test]]
name = "persistence_engine_restore"
path = "tests/persistence_engine_restore.rs"
[[test]]
name = "public_api"
path = "tests/public_api.rs"
[[test]]
name = "serialization_workflow"
path = "tests/serialization_workflow.rs"
[[test]]
name = "sliced_updates"
path = "tests/sliced_updates.rs"
[[test]]
name = "state_persistence_feature"
path = "tests/state_persistence_feature.rs"
[[test]]
name = "wasm_wasi_compat"
path = "tests/wasm_wasi_compat.rs"
[[test]]
name = "wasm_web_compat"
path = "tests/wasm_web_compat.rs"
[[bench]]
name = "store_dispatch"
path = "benches/store_dispatch.rs"
harness = false
[dependencies.bincode]
version = "1.3"
optional = true
[dependencies.flutter_rust_bridge]
version = "=2.11.1"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.serde]
version = "1"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1"
optional = true
[dependencies.thiserror]
version = "2"
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies.base64]
version = "0.22"
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies.gloo-timers]
version = "0.3"
features = ["futures"]
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies.js-sys]
version = "0.3"
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies.tokio]
version = "1.34.0"
features = [
"sync",
"rt",
]
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies.wasm-bindgen-futures]
version = "0.4"
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies.web-sys]
version = "0.3"
features = [
"Storage",
"Window",
]
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dev-dependencies.wasm-bindgen-test]
version = "0.3"
[target.'cfg(all(target_arch = "wasm32", target_os = "wasi"))'.dependencies.tokio]
version = "1.34.0"
features = [
"sync",
"rt",
"time",
]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.34.0"
features = ["full"]
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
version = "0.5"