[package]
edition = "2024"
rust-version = "1.88"
name = "connectrpc"
version = "0.3.3"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A Tower-based Rust implementation of the ConnectRPC protocol"
readme = "README.md"
keywords = [
"connectrpc",
"grpc",
"rpc",
"protobuf",
"tower",
]
categories = [
"network-programming",
"web-programming::http-server",
"web-programming::http-client",
]
license = "Apache-2.0"
repository = "https://github.com/anthropics/connect-rust"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
axum = ["dep:axum"]
client = [
"hyper/client",
"hyper/http1",
"hyper/http2",
"hyper-util/client",
"hyper-util/client-legacy",
"hyper-util/tokio",
"hyper-util/http1",
"hyper-util/http2",
"dep:hyper",
"dep:hyper-util",
"tokio/net",
]
client-tls = [
"dep:rustls",
"dep:tokio-rustls",
"dep:hyper-rustls",
"dep:rustls-pki-types",
"client",
]
default = [
"gzip",
"zstd",
"streaming",
]
gzip = [
"dep:flate2",
"async-compression?/gzip",
]
server = [
"hyper/server",
"hyper/http1",
"hyper/http2",
"hyper-util/server",
"hyper-util/tokio",
"hyper-util/http1",
"hyper-util/http2",
"dep:hyper",
"dep:hyper-util",
"dep:libc",
"dep:tower-http",
"tokio/net",
"tokio-util/rt",
]
server-tls = [
"dep:rustls",
"dep:tokio-rustls",
"server",
]
streaming = ["dep:async-compression"]
tls = [
"server-tls",
"client-tls",
]
zstd = [
"dep:zstd",
"async-compression?/zstd",
]
[lib]
name = "connectrpc"
path = "src/lib.rs"
[dependencies.async-compression]
version = "0.4"
features = ["tokio"]
optional = true
[dependencies.axum]
version = "0.8"
features = ["http2"]
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.buffa]
version = "0.3"
features = ["json"]
[dependencies.bytes]
version = "1.5"
features = ["serde"]
[dependencies.flate2]
version = "1.0"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.http]
version = "1"
[dependencies.http-body]
version = "1"
[dependencies.http-body-util]
version = "0.1"
[dependencies.hyper]
version = "1"
optional = true
[dependencies.hyper-rustls]
version = "0.27"
features = [
"http1",
"http2",
"tls12",
]
optional = true
default-features = false
[dependencies.hyper-util]
version = "0"
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.percent-encoding]
version = "2.3"
[dependencies.pin-project]
version = "1"
[dependencies.rustls]
version = "0.23"
optional = true
[dependencies.rustls-pki-types]
version = "1"
optional = true
[dependencies.serde]
version = "1"
features = [
"derive",
"derive",
]
[dependencies.serde_json]
version = "1"
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = [
"rt",
"io-util",
"sync",
"time",
]
[dependencies.tokio-rustls]
version = "0.26"
optional = true
[dependencies.tokio-util]
version = "0.7"
features = [
"codec",
"io",
]
[dependencies.tower]
version = "0.5"
features = [
"util",
"buffer",
]
[dependencies.tower-http]
version = "0.6"
features = [
"catch-panic",
"catch-panic",
]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.zstd]
version = "0.13"
optional = true
[dev-dependencies.buffa-types]
version = "0.3"
features = ["json"]
[dev-dependencies.rcgen]
version = "0.14"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
"test-util",
]
[lints.clippy]
dbg_macro = "warn"
result_large_err = "allow"
uninlined_format_args = "warn"
[lints.rust]
dead_code = "warn"
explicit_outlives_requirements = "warn"
unused_imports = "warn"
unused_lifetimes = "warn"