[workspace] members = [".", "fuzz", "rama-cli", "rama-fp", "rama-macros"] [workspace.package] version = "0.2.0-alpha.0" license = "MIT OR Apache-2.0" edition = "2021" repository = "https://github.com/plabayo/rama" homepage = "https://ramaproxy.org" keywords = ["io", "async", "non-blocking", "futures"] categories = ["asynchronous", "network-programming"] authors = ["Glen De Cauwsemaecker "] rust-version = "1.75.0" [workspace.dependencies] async-compression = "0.4" base64 = "0.22" bitflags = "2.4" brotli = "6" bytes = "1" clap = { version = "4.5.4", features = ["derive"] } crossterm = "0.27" flate2 = "1.0" futures-lite = "2.3.0" futures-core = "0.3" h2 = "0.4" headers = "0.4" hex = "0.4" http = "1" http-body = "1" http-body-util = "0.1" http-range-header = "0.4.0" httpdate = "1.0" hyper = "1.2" hyper-util = "0.1.4" ipnet = "2.9.0" itertools = "0.13.0" mime = "0.3.17" mime_guess = { version = "2", default-features = false } paste = "1.0" percent-encoding = "2.1" pin-project-lite = "0.2.13" pki-types = { package = "rustls-pki-types", version = "^1" } proc-macro2 = "1.0" opentelemetry = { version = "0.23", default-features = false, features = ["trace"] } opentelemetry_sdk = { version = "0.23", default-features = false, features = ["trace"] } opentelemetry-prometheus = { version = "0.16" } opentelemetry-semantic-conventions = "0.15" prometheus = "0.13.3" quickcheck = "1.0" quote = "1.0" ratatui = "0.26" rcgen = "0.13.0" regex = "1.10.3" rustls = { version = "0.23", default-features = false, features = ["logging", "std", "tls12", "ring"] } rustls-native-certs = "=0.7.0" rustls-pemfile = "2.1" rustversion = "1.0.9" serde = "1.0" serde_json = "1.0" serde_html_form = "0.2" syn = "2.0" sync_wrapper = "1.0" tempfile = "3.10" tokio = "1.35" tokio-graceful = "0.1" tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "tls12", "ring"] } tokio-test = "0.4.3" tokio-util = "0.7" tracing = "0.1" tracing-subscriber = "0.3.17" trybuild = "1.0.63" uuid = "1.6" zstd = "0.13" venndb = "0.5.0" unicode-normalization = "0.1.23" iri-string = "0.7.0" escargot = "0.5.10" divan = "0.1.14" webpki-roots = "0.26.1" terminal-prompt = "0.2.3" parking_lot = "0.12.3" const_format = "0.2.32" [package] name = "rama" readme = "README.md" documentation = "https://docs.rs/rama" description = "modular service framework" version = { workspace = true } license = { workspace = true } edition = { workspace = true } repository = { workspace = true } homepage = { workspace = true } keywords = { workspace = true } categories = { workspace = true } authors = { workspace = true } rust-version = { workspace = true } [features] default = ["compression"] full = ["compression", "telemetry"] telemetry = ["dep:prometheus", "dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-prometheus", "dep:opentelemetry-semantic-conventions"] compression = ["dep:async-compression"] [build-dependencies] rustversion = { workspace = true } [dependencies] async-compression = { workspace = true, features = ["tokio", "brotli", "zlib", "gzip", "zstd"], optional = true } base64 = { workspace = true } bitflags = { workspace = true } bytes = { workspace = true } const_format = { workspace = true } futures-core = { workspace = true } futures-lite = { workspace = true } h2 = { workspace = true } headers = { workspace = true } http = { workspace = true } http-body = { workspace = true } http-body-util = { workspace = true } http-range-header = { workspace = true } httpdate = { workspace = true } hyper = { workspace = true, features = ["http1", "http2", "server", "client"] } hyper-util = { workspace = true, features = ["tokio", "server-auto"] } ipnet = { workspace = true } iri-string = { workspace = true } mime = { workspace = true } mime_guess = { workspace = true } opentelemetry = { workspace = true, optional = true } opentelemetry-prometheus = { workspace = true, optional = true } opentelemetry-semantic-conventions = { workspace = true, optional = true } opentelemetry_sdk = { workspace = true, optional = true } parking_lot = { workspace = true } paste = { workspace = true } percent-encoding = { workspace = true } pin-project-lite = { workspace = true } pki-types = { workspace = true } prometheus = { workspace = true, optional = true } quickcheck = { workspace = true } rama-macros = { version = "0.2.0-alpha.0", path = "rama-macros" } rcgen = { workspace = true } regex = { workspace = true } rustls = { workspace = true } rustls-native-certs = { workspace = true } rustls-pemfile = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_html_form = { workspace = true } serde_json = { workspace = true } sync_wrapper = { workspace = true } tokio = { workspace = true, features = ["macros", "fs", "io-std"] } tokio-graceful = { workspace = true } tokio-rustls = { workspace = true } tokio-util = { workspace = true } tracing = { workspace = true } unicode-normalization = { workspace = true } uuid = { workspace = true, features = ["v4"] } venndb = { workspace = true } webpki-roots = { workspace = true } [dev-dependencies] brotli = { workspace = true } divan = { workspace = true } escargot = { workspace = true } flate2 = { workspace = true } itertools = { workspace = true } rustversion = { workspace = true } tempfile = { workspace = true } tokio = { workspace = true, features = ["full"] } tokio-test = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter"] } zstd = { workspace = true } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [[bench]] name = "ua_parse" harness = false