[package]
name = "dioxus-fullstack"
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]
# server functions
server_fn = { workspace = true, default-features = false }
dioxus_server_macro = { workspace = true }

# axum
axum = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true, features = ["fs"] }

dioxus-lib = { workspace = true }
generational-box = { workspace = true }

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

# Web Integration
dioxus-web = { workspace = true, features = ["hydrate"], default-features = false, optional = true }
dioxus-interpreter-js = { workspace = true, optional = true }

# Desktop Integration
dioxus-desktop = { workspace = true, optional = true }

# Mobile Integration
dioxus-mobile = { workspace = true, optional = true }

tracing = { workspace = true }
tracing-futures = { workspace = true, optional = true }
tokio-util = { workspace = true, features = ["rt"], optional = true }
async-trait = { workspace = true, optional = true }

serde = { workspace = true }
tokio-stream = { workspace = true, features = ["sync"], optional = true }
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.10", optional = true }
thiserror = { workspace = true, optional = true }
bytes = "1.10.0"
tower = { workspace = true, features = ["util"], optional = true }
tower-layer = { version = "0.3.3", optional = true }
parking_lot = { workspace = true, features = ["send_guard"], optional = true }
web-sys = { version = "0.3.77", optional = true, features = [
  "Window",
  "Document",
  "Element",
  "HtmlDocument",
  "Storage",
  "console",
] }

dioxus-cli-config = { workspace = true, optional = true }

dioxus-devtools = { workspace = true, optional = true }
aws-lc-rs = { version = "1.12.5", optional = true }
dioxus-history = { workspace = true }

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

[features]
default = ["devtools", "document", "file_engine", "mounted"]
devtools = ["dioxus-web?/devtools", "dep:dioxus-devtools"]
mounted = ["dioxus-web?/mounted"]
file_engine = ["dioxus-web?/file_engine"]
document = ["dioxus-web?/document"]
web = ["dep:dioxus-web", "dep:web-sys", "dioxus-fullstack-hooks/web", "server_fn/browser"]
desktop = ["server_fn/reqwest", "dioxus_server_macro/reqwest"]
mobile = ["server_fn/reqwest", "dioxus_server_macro/reqwest"]
default-tls = ["server_fn/default-tls"]
rustls = ["server_fn/rustls", "dep:rustls", "dep:hyper-rustls"]
server = [
    "server-core" ,
    "default-tls",
    "server_fn/axum",
]
server-core = [
    "server_fn/axum-no-default",
    "dioxus_server_macro/axum",
    "server_fn/reqwest",
    "server_fn/ssr",
    "dioxus_server_macro/reqwest",
    "dioxus-fullstack-hooks/server",
    "dep:dioxus-server",
    "dioxus-interpreter-js",
]
aws-lc-rs = ["dep:aws-lc-rs"]

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