[package]
edition = "2024"
rust-version = "1.90.0"
name = "volga"
version = "0.8.5"
authors = ["Roman Emreis <roman.emreis@outlook.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Easy & Fast Web Framework for Rust"
homepage = "https://romanemreis.github.io/volga-docs"
documentation = "https://docs.rs/volga"
readme = "README.md"
keywords = [
"async",
"server",
"http",
"web",
"framework",
]
categories = [
"web-programming::http-server",
"web-programming::websocket",
"network-programming",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/RomanEmreis/volga"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
[features]
auth = [
"basic-auth",
"jwt-auth",
]
basic-auth = [
"dep:base64",
"middleware",
]
compression-brotli = [
"middleware",
"dep:async-compression",
"async-compression?/brotli",
]
compression-full = [
"compression-brotli",
"compression-gzip",
"compression-zstd",
]
compression-gzip = [
"middleware",
"dep:async-compression",
"async-compression?/zlib",
"async-compression?/gzip",
]
compression-zstd = [
"middleware",
"dep:async-compression",
"async-compression?/zstd",
]
cookie = ["dep:cookie"]
cookie-full = [
"cookie",
"private-cookie",
"signed-cookie",
]
decompression-brotli = [
"middleware",
"dep:async-compression",
"async-compression?/brotli",
]
decompression-full = [
"decompression-brotli",
"decompression-gzip",
"decompression-zstd",
]
decompression-gzip = [
"middleware",
"dep:async-compression",
"async-compression?/zlib",
"async-compression?/gzip",
]
decompression-zstd = [
"middleware",
"dep:async-compression",
"async-compression?/zstd",
]
default = ["http1"]
dev-cert = ["dep:volga-dev-cert"]
di = ["dep:volga-di"]
full = [
"http1",
"http2",
"auth",
"middleware",
"di",
"tls",
"cookie-full",
"tracing",
"multipart",
"openapi",
"problem-details",
"rate-limiting",
"static-files",
"compression-full",
"decompression-full",
"ws",
]
http1 = [
"dep:hyper",
"hyper?/http1",
"dep:hyper-util",
"hyper-util?/http1",
"dep:httpdate",
]
http2 = [
"dep:hyper",
"hyper?/http2",
"dep:hyper-util",
"hyper-util?/http2",
"dep:httpdate",
]
jwt-auth = [
"dep:jsonwebtoken",
"middleware",
]
jwt-auth-full = [
"jwt-auth",
"dep:volga-macros",
"volga-macros?/jwt-auth-derive",
]
macros = ["dep:volga-macros"]
middleware = []
multipart = ["dep:multer"]
openapi = [
"dep:sha1",
"dep:volga-open-api",
]
private-cookie = [
"di",
"dep:cookie",
"cookie?/private",
]
problem-details = [
"serde/derive",
"volga-open-api?/problem-details",
]
rate-limiting = [
"dep:twox-hash",
"dep:volga-rate-limiter",
"middleware",
]
signed-cookie = [
"di",
"dep:cookie",
"cookie?/signed",
]
static-files = [
"dep:chrono",
"dep:handlebars",
"dep:sha1",
]
test = [
"dep:uuid",
"dep:tempfile",
"dep:reqwest",
"reqwest?/blocking",
"reqwest?/multipart",
"reqwest?/stream",
"reqwest?/json",
"reqwest?/http2",
"reqwest?/brotli",
"reqwest?/deflate",
"reqwest?/gzip",
"reqwest?/zstd",
"reqwest?/rustls-no-provider",
]
tls = [
"dep:tokio-rustls",
"tokio-rustls?/tls12",
"tokio-rustls?/aws-lc-rs",
]
tracing = ["dep:tracing"]
ws = [
"dep:sha1",
"dep:base64",
"dep:tokio-tungstenite",
]
[lib]
name = "volga"
path = "src/lib.rs"
[[test]]
name = "auth_claims"
path = "tests/auth_claims.rs"
[[test]]
name = "compression"
path = "tests/compression.rs"
[[test]]
name = "cors"
path = "tests/cors.rs"
[[test]]
name = "decompression"
path = "tests/decompression.rs"
[[test]]
name = "file_download"
path = "tests/file_download.rs"
[[test]]
name = "file_upload"
path = "tests/file_upload.rs"
[[test]]
name = "headers"
path = "tests/headers.rs"
[[test]]
name = "http_header_macro"
path = "tests/http_header_macro.rs"
[[test]]
name = "json_payload"
path = "tests/json_payload.rs"
[[test]]
name = "jwt"
path = "tests/jwt.rs"
[[test]]
name = "mapping_tests"
path = "tests/mapping_tests.rs"
[[test]]
name = "middleware_mapping_tests"
path = "tests/middleware_mapping_tests.rs"
[[test]]
name = "rate_limiting"
path = "tests/rate_limiting.rs"
[[test]]
name = "request_params"
path = "tests/request_params.rs"
[[test]]
name = "response_caching"
path = "tests/response_caching.rs"
[[test]]
name = "scope_pipeline"
path = "tests/scope_pipeline.rs"
[[test]]
name = "sse"
path = "tests/sse.rs"
[[test]]
name = "static_files"
path = "tests/static_files.rs"
[[test]]
name = "tls"
path = "tests/tls.rs"
[[test]]
name = "tracing"
path = "tests/tracing.rs"
[[test]]
name = "ws"
path = "tests/ws.rs"
[[bench]]
name = "auth"
path = "benches/auth.rs"
harness = false
required-features = [
"jwt-auth",
"middleware",
]
[[bench]]
name = "di"
path = "benches/di.rs"
harness = false
required-features = ["di"]
[[bench]]
name = "mw"
path = "benches/mw.rs"
harness = false
required-features = ["middleware"]
[[bench]]
name = "server"
path = "benches/server.rs"
harness = false
[dependencies.async-compression]
version = "0.4.41"
features = ["tokio"]
optional = true
[dependencies.async-stream]
version = "0.3.6"
[dependencies.base64]
version = "0.22.1"
optional = true
[dependencies.bytes]
version = "1.11.1"
[dependencies.chrono]
version = "0.4.44"
optional = true
[dependencies.cookie]
version = "0.18.1"
features = ["percent-encode"]
optional = true
[dependencies.futures-util]
version = "0.3.32"
features = ["alloc"]
default-features = false
[dependencies.handlebars]
version = "6.4.0"
optional = true
[dependencies.http-body-util]
version = "0.1.3"
[dependencies.httpdate]
version = "1.0.3"
optional = true
[dependencies.hyper]
version = "1.8.1"
features = ["server"]
optional = true
[dependencies.hyper-util]
version = "0.1.20"
features = [
"server",
"server-auto",
"server-graceful",
"service",
"tokio",
]
optional = true
[dependencies.itoa]
version = "1.0.17"
[dependencies.jsonwebtoken]
version = "10.3.0"
features = ["rust_crypto"]
optional = true
[dependencies.memchr]
version = "2.8.0"
[dependencies.mime]
version = "0.3.17"
[dependencies.mime_guess]
version = "2.0.5"
[dependencies.multer]
version = "3.1.0"
optional = true
[dependencies.pin-project-lite]
version = "0.2.17"
[dependencies.reqwest]
version = "0.13.2"
optional = true
[dependencies.serde]
version = "1.0.228"
[dependencies.serde_json]
version = "1.0.149"
[dependencies.serde_urlencoded]
version = "0.7.1"
[dependencies.sha1]
version = "0.10.6"
optional = true
[dependencies.smallvec]
version = "1.15.1"
[dependencies.tempfile]
version = "3.26.0"
optional = true
[dependencies.tokio]
version = "1.49.0"
features = [
"fs",
"io-util",
"macros",
"net",
"rt",
"rt-multi-thread",
"signal",
"sync",
"time",
]
[dependencies.tokio-rustls]
version = "0.26.4"
features = [
"tls12",
"aws-lc-rs",
]
optional = true
default-features = false
[dependencies.tokio-tungstenite]
version = "0.28.0"
optional = true
[dependencies.tokio-util]
version = "0.7.18"
[dependencies.tracing]
version = "0.1.44"
optional = true
default-features = false
[dependencies.twox-hash]
version = "2.1.2"
optional = true
[dependencies.uuid]
version = "1.21.0"
features = ["v4"]
optional = true
[dependencies.volga-dev-cert]
version = "0.8.5"
optional = true
[dependencies.volga-di]
version = "0.8.5"
optional = true
[dependencies.volga-macros]
version = "0.8.5"
optional = true
[dependencies.volga-open-api]
version = "0.8.5"
optional = true
[dependencies.volga-rate-limiter]
version = "0.8.5"
optional = true
[dev-dependencies.base64]
version = "0.22.1"
[dev-dependencies.criterion]
version = "0.8.2"
features = ["async_tokio"]
[dev-dependencies.hyper]
version = "1.8.1"
features = ["client"]
[dev-dependencies.jsonwebtoken]
version = "10.3.0"
features = ["rust_crypto"]
[dev-dependencies.reqwest]
version = "0.13.2"
features = ["rustls-no-provider"]
[dev-dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dev-dependencies.tempfile]
version = "3.26.0"
[dev-dependencies.tracing-subscriber]
version = "0.3.22"
features = ["env-filter"]
[dev-dependencies.uuid]
version = "1.21.0"
features = ["v4"]
[lints.rust]
missing_debug_implementations = "warn"
missing_docs = "warn"
unreachable_pub = "warn"
unsafe_code = "forbid"
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1