roa 0.5.1

async web framework inspired by koajs, lightweight but powerful.
Documentation
[package]
name = "roa"
version = "0.5.1"
authors = ["Hexilee <i@hexilee.me>"]
edition = "2018"
license = "MIT"
readme = "./README.md"
repository = "https://github.com/Hexilee/roa"
documentation = "https://docs.rs/roa"
homepage = "https://github.com/Hexilee/roa/wiki"
description = """
async web framework inspired by koajs, lightweight but powerful.
"""
keywords = ["http", "web", "framework", "async"]
categories = ["network-programming", "asynchronous",
              "web-programming::http-server"]

[package.metadata.docs.rs]
features = ["docs"]
rustdoc-args = ["--cfg", "feature=\"docs\""]

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

[badges]
codecov = { repository = "Hexilee/roa" }

[dependencies]
log = "0.4"
futures = "0.3"
bytesize = "1.0"
async-trait = "0.1.22"
url = "2.1.1"
percent-encoding = "2.1"
bytes = "0.5"
headers = "0.3.1"
tokio = "0.2.11"
lazy_static = "1.4.0"
hyper = { version = "0.13", default-features = false, features = ["stream"] }
roa-core = { path = "../roa-core", version = "0.5.0" }

async-std = { version = "1.5", optional = true }
cookie = { version = "0.13", features = ["percent-encode"], optional = true }
jsonwebtoken = { version = "7.1", optional = true }
serde = { version = "1", optional = true }
serde_json = { version = "1.0", optional = true }
async-compression = { version = "0.3", features = ["all-algorithms", "stream"], optional = true }
accept-encoding = { package = "accept-encoding-fork", version = "=0.2.0-alpha.3", optional = true }

# router
radix_trie = { version = "0.1.6", optional = true }
regex = { version = "1.3", optional = true }
doc-comment = { version = "0.3.3", optional = true }

# body
askama = { version = "0.9", optional = true }
serde_urlencoded = { version = "0.6", optional = true }
mime_guess = { version = "2.0", optional = true }

# websocket
tokio-tungstenite = { version = "0.10.1", default-features = false, optional = true }

# tcp
futures-timer = { version = "3.0", optional = true }

# tls
rustls = { version = "0.17", optional = true }
async-tls = { version = "0.7", optional = true }

[dev-dependencies]
tokio = { version = "0.2", features = ["full"] }
tokio-tls = "0.3.0"
hyper-tls = "0.4.1"
reqwest = { version = "0.10", features = ["json", "cookies", "gzip"] }
async-std = { version = "1.5.0", features = ["attributes"] }
pretty_env_logger = "0.3"
serde = { version = "1", features = ["derive"] }
test-case = "1.0.0"
slab = "0.4.2"
multimap = "0.8.0"
hyper = "0.13"
chrono = "0.4"
mime = "0.3"
encoding = "0.2"
askama = "0.9"

[features]
default = ["async_rt"]
full = [
    "default",
    "json",
    "urlencoded",
    "file",
    "template",
    "tls",
    "router",
    "jwt",
    "cookies",
    "compress",
    "websocket",
]

docs = ["full", "roa-core/docs"]
runtime = ["roa-core/runtime"]
json = ["serde", "serde_json"]
urlencoded = ["serde", "serde_urlencoded"]
file = ["mime_guess", "async-std"]
template = ["askama"]
tcp = ["async-std", "futures-timer"]
tls = ["rustls", "async-tls"]
cookies = ["cookie"]
jwt = ["jsonwebtoken", "serde", "serde_json"]
router = ["radix_trie", "regex", "doc-comment"]
websocket = ["tokio-tungstenite"]
compress = ["async-compression", "accept-encoding"]
async_rt = ["runtime", "tcp"]