[package]
name = "dioxus-server"
authors = ["Jonathan Kelley", "Evan Almloff"]
version = { workspace = true }
edition = "2021"
description = "Fullstack utilities for Dioxus: Build fullstack web, desktop, and mobile apps with a single codebase."
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
keywords = ["web", "desktop", "mobile", "gui", "server"]
resolver = "2"

[dependencies]
# dioxus
dioxus-lib = { workspace = true }
generational-box = { workspace = true }

# server functions
server_fn = { workspace = true, default-features = false }

# axum + native deps
axum = { workspace = true, default-features = false }
tower-http = { workspace = true, features = ["fs"], optional = true }
tokio-util = { workspace = true, features = ["rt"], optional = true }
tokio-stream = { workspace = true, features = ["sync"], optional = true }
tower = { workspace = true, features = ["util"], optional = true}
tower-layer = { version = "0.3.2", optional = true}
hyper-util = { workspace = true, features = ["full"], optional = true }
hyper = { workspace = true, optional = true }
http = { workspace = true }

# Dioxus + SSR
dioxus-ssr = { workspace = true }
dioxus-isrg = { workspace = true }
dioxus-router = { workspace = true, features = ["streaming"] }
dioxus-fullstack-hooks = { workspace = true }
dioxus-fullstack-protocol = { workspace = true }
dioxus-interpreter-js = { workspace = true, optional = true }

tracing = { workspace = true }
tracing-futures = { workspace = true }
async-trait = { workspace = true }
serde = { workspace = true }
enumset = "1.1.5"

futures-util = { workspace = true }
futures-channel = { workspace = true }
ciborium = { workspace = true }
base64 = { workspace = true }
rustls = { workspace = true, optional = true }
hyper-rustls = { workspace = true, optional = true }

pin-project = { version = "1.1.2" }
thiserror = { workspace = true }
bytes = "1.4.0"
parking_lot = { workspace = true, features = ["send_guard"] }
web-sys = { version = "0.3.61", features = [
    "Window",
    "Document",
    "Element",
    "HtmlDocument",
    "Storage",
    "console",
] }

dioxus-cli-config = { workspace = true }
dioxus-devtools = { workspace = true, optional = true }
aws-lc-rs = { version = "1.8.1", optional = true }
dioxus-history = { workspace = true }
subsecond.workspace = true
inventory = { workspace = true }
dashmap = "6.1.0"

[target.'cfg(target_arch = "wasm32")'.dependencies]
tokio = { workspace = true, features = ["rt", "sync", "macros"] }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { workspace = true, features = ["rt", "sync", "rt-multi-thread", "macros", "net"] }

[dev-dependencies]
dioxus = { workspace = true, features = ["fullstack"] }

[features]
default = ["devtools", "full"]
full = [
    "core",
    "server_fn/ssr",
    "dep:tower-http",
    "default-tls",
    "dep:tower",
    "dep:hyper",
    "dep:tower-layer",
    "dep:tokio-util",
    "dep:hyper-util",
]
core = [
    "server_fn/axum-no-default",
    "server_fn/ssr",
    "document",
]
devtools = ["dep:dioxus-devtools"]
document = ["dep:dioxus-interpreter-js"]
default-tls = ["server_fn/default-tls"]
rustls = ["server_fn/rustls", "dep:rustls", "dep:hyper-rustls"]
aws-lc-rs = ["dep:aws-lc-rs"]

[package.metadata.docs.rs]
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
features = ["axum", "web", "aws-lc-rs"]
