[package]
name = "mendes"
version = "0.8.0"
edition = "2021"
rust-version = "1.63"
description = "Rust web toolkit for impatient perfectionists"
documentation = "https://docs.rs/mendes"
repository = "https://github.com/djc/mendes"
keywords = ["web", "http", "server", "async"]
categories = ["asynchronous", "web-programming::http-server"]
license = "MIT OR Apache-2.0"
workspace = ".."
readme = "../README.md"

[features]
default = ["application"]
application = ["async-trait", "http", "mendes-macros", "percent-encoding", "serde", "serde_urlencoded"]
brotli = ["compression", "async-compression/brotli"]
compression = ["async-compression", "futures-util", "tokio-util"]
cookies = ["chrono", "http", "data-encoding", "key", "postcard", "mendes-macros", "serde-derive"]
deflate = ["compression", "async-compression/deflate"]
forms = ["mendes-macros", "serde_urlencoded", "serde-derive"]
gzip = ["compression", "async-compression/gzip"]
key = ["data-encoding", "ring"]
json = ["serde_json"]
uploads = ["http", "httparse", "memchr"]
with-http-body = ["http-body", "bytes", "pin-utils"]
with-hyper = ["application", "async-trait", "bytes", "futures-util", "futures-util/std", "http", "hyper"]
static = ["application", "tokio/fs", "mime_guess", "http"]
serde-derive = ["serde/derive"]

[dependencies]
async-compression = { version = "0.4.0", features = ["tokio"], optional = true }
async-trait = { version = "0.1.24", optional = true }
bytes = { version = "1", optional = true }
chrono = { version = "0.4.23", optional = true, features = ["serde"] }
data-encoding = { version = "2.1.2", optional = true }
futures-util = { version = "0.3.7", optional = true, default-features = false }
http = { version = "0.2", optional = true }
http-body = { version = "0.4", optional = true }
httparse = { version = "1.3.4", optional = true }
hyper = { version = "0.14.1", optional = true, features = ["http1", "http2", "runtime", "server", "stream"] }
memchr = { version = "2.5", optional = true }
mendes-macros = { version = "0.4", path = "../mendes-macros", optional = true }
mime_guess = { version = "2.0.3", default-features = false, optional = true }
percent-encoding = { version = "2.1.0", default-features = false, optional = true }
pin-utils = { version = "0.1.0", optional = true }
postcard = { version = "1.0.6", default-features = false, features = ["use-std"], optional = true }
ring = { version = "0.17.0", optional = true }
serde = { version = "1.0.104", optional = true }
serde_json = { version = "1.0.48", optional = true }
serde_urlencoded = { version = "0.7.0", optional = true }
thiserror = { version = "1.0.20" }
tokio = { version = "1", optional = true }
tokio-util = { version = "0.7", optional = true, features = ["codec", "compat", "io"] }
tracing = { version = "0.1.26", optional = true }

[dev-dependencies]
reqwest = { version = "0.11.11", default-features = false }
tokio = { version = "1", features = ["macros", "rt"] }

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
