[package]
name = "dashboard"
version = "0.1.0"
authors = ["Sharang Parnerkar <parnerkarsharang@gmail.com>"]
edition = "2021"

default-run = "dashboard"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[lints.clippy]
# We avoid panicking behavior in our code.
# In some places where panicking is desired, such as in tests,
# we can allow it by using #[allow(clippy::unwrap_used, clippy::expect_used].
unwrap_used = "deny"
expect_used = "deny"

[dependencies]
dioxus = { version = "=0.7.3", features = ["fullstack", "router"] }
dioxus-sdk = { version = "0.7", default-features = false, features = [
    "time",
    "storage",
] }
axum = { version = "0.8.8", optional = true }
chrono = { version = "0.4" }
tower-http = { version = "0.6.2", features = [
    "cors",
    "trace",
], optional = true }
tokio = { version = "1.4", features = ["time"] }
serde = { version = "1.0.210", features = ["derive"] }
thiserror = { version = "2.0", default-features = false }
dotenvy = { version = "0.15", default-features = false }
mongodb = { version = "3.2", default-features = false, features = [
    "rustls-tls",
    "compat-3-0-0",
], optional = true }
futures = { version = "0.3.31", default-features = false }
reqwest = { version = "0.13", optional = true, features = ["json", "form", "stream"] }
tower-sessions = { version = "0.15", default-features = false, features = [
    "axum-core",
    "memory-store",
    "signed",
], optional = true }
time = { version = "0.3", default-features = false, optional = true }
rand = { version = "0.10", optional = true }
petname = { version = "2.0", default-features = false, features = [
    "default-rng",
    "default-words",
], optional = true }
async-stripe = { version = "0.41", optional = true, default-features = false, features = [
    "runtime-tokio-hyper-rustls-webpki",
    "webhook-events",
    "billing",
    "checkout",
    "products",
    "connect",
    "stream",
] }
secrecy = { version = "0.10", default-features = false, optional = true }
serde_json = { version = "1.0.133", default-features = false }
maud = { version = "0.27", default-features = false }
url = { version = "2.5.4", default-features = false, optional = true }
js-sys = { version = "0.3", optional = true }
wasm-bindgen = { version = "0.2", optional = true }
web-sys = { version = "0.3", optional = true, features = [
    "Clipboard",
    "Document",
    "Element",
    "EventSource",
    "HtmlElement",
    "MessageEvent",
    "Navigator",
    "Storage",
    "Window",
] }
tracing = "0.1.40"
# Debug
dioxus-logger = "=0.7.3"
dioxus-cli-config = "=0.7.3"
dioxus-free-icons = { version = "0.10", features = [
    "bootstrap",
    "font-awesome-solid",
] }
sha2 = { version = "0.10.9", default-features = false, optional = true }
base64 = { version = "0.22.1", default-features = false, optional = true }
scraper = { version = "0.22", default-features = false, optional = true }
pulldown-cmark = { version = "0.12", default-features = false, features = ["html"] }
tokio-stream = { version = "0.1", optional = true, features = ["sync"] }
async-stream = { version = "0.3", optional = true }
bytes = { version = "1", optional = true }

[features]
# default = ["web"]
web = ["dioxus/web", "dep:reqwest", "dep:web-sys", "dep:wasm-bindgen", "dep:js-sys"]
server = [
    "dioxus/server",
    "dep:axum",
    "dep:mongodb",
    "dep:reqwest",
    "dep:tower-sessions",
    "dep:tower-http",
    "dep:time",
    "dep:rand",
    "dep:url",
    "dep:sha2",
    "dep:base64",
    "dep:scraper",
    "dep:secrecy",
    "dep:petname",
    "dep:tokio-stream",
    "dep:async-stream",
    "dep:bytes",
]

[dev-dependencies]
pretty_assertions = "1.4"
serial_test = "3.2"

[[bin]]
name = "dashboard"
path = "bin/main.rs"
