actr-framework 0.3.2

Actor-RTC framework core (stub for code generation testing)
Documentation
[package]
name = "actr-framework"
version = "0.3.2"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
description = "Actor-RTC framework core (stub for code generation testing)"
repository = "https://github.com/actor-rtc/actr"

[lints]
workspace = true

[dependencies]
actr-protocol.workspace = true
async-trait = "0.1"
bytes = "1.10"
futures-util = "0.3"
prost = "0.14"
uuid = { version = "1.18" }

# Optional dependencies for utilities
anyhow = "1.0"
tracing = "0.1"
maxminddb = { version = "0.24", optional = true }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots", "blocking"], optional = true }
flate2 = { version = "1.1", optional = true }
tar = { version = "0.4", optional = true }

[features]
default = []
# `cdylib`: enable native shared-library guest runtime (dynclib ABI)
cdylib = []
# `test-utils`: enable testing helpers such as `DummyContext` (includes UUID v4 generation and is not compatible with `wasm32`)
test-utils = ["uuid/v4"]
# `web`: opt-in `WebContext` implementation targeting
# `wasm32-unknown-unknown` via wasm-bindgen (Option U γ-unified).
# The feature only pulls in the wasm-bindgen toolchain crates; native
# builds (`default = []`) never see them.
web = [
    "dep:wasm-bindgen",
    "dep:wasm-bindgen-futures",
    "dep:js-sys",
    "dep:serde-wasm-bindgen",
    "dep:actr-web-abi",
]
geoip = [
    "maxminddb",
    "reqwest",
    "flate2",
    "tar",
] # GeoIP with auto-download support

# wit-bindgen is only needed when compiling the guest for wasm32-wasip2.
# The generated code is gated by `#[cfg(target_arch = "wasm32")]`, so hosts
# never pull it in.
[target.'cfg(target_arch = "wasm32")'.dependencies]
wit-bindgen = "=0.57.1"

# Optional wasm-bindgen stack — only compiled in when `web` feature is
# enabled (which itself requires a `wasm32-unknown-unknown` target).
wasm-bindgen = { version = "0.2.108", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
js-sys = { version = "0.3", optional = true }
serde-wasm-bindgen = { version = "0.6", optional = true }
# `actr-web-abi` is the WIT-lowered browser ABI crate that lives in the
# separately-gated `bindings/web` workspace. `WebContext` routes every
# outbound call through its `guest::*_with_request_id` wrappers (Option U
# γ-unified §3.3/§3.4). Kept optional + path+version so native builds never
# pull it (or its wasm-bindgen tail) and so the cross-workspace path is
# explicit.
actr-web-abi = { path = "../../bindings/web/crates/actr-web-abi", version = "0.3.2", optional = true }

[dev-dependencies]
tokio.workspace = true