content: [package]
  name = "hudsucker"
  version = "0.24.0"
  edition = "2024"
  rust-version = "1.85.0"
  description = "MITM HTTP/S proxy"
  documentation = "https://docs.rs/hudsucker"
  readme = "README.md"
  homepage = "https://github.com/omjadas/hudsucker"
  repository = "https://github.com/omjadas/hudsucker"
  license = "MIT OR Apache-2.0"
  keywords = ["http", "proxy"]
  categories = ["network-programming"]
  exclude = [".github/"]
  
  [package.metadata.docs.rs]
  all-features = true
  rustdoc-args = ["--cfg", "docsrs"]
  
  [dependencies]
  async-compression = { version = "0.4.0", features = ["tokio", "brotli", "gzip", "zlib", "zstd"], optional = true }
  bstr = "1.0.0"
  futures = "0.3.11"
  http = "1.1.0"
  http-body-util = "0.1.0"
  hyper = "1.1.0"
  hyper-rustls = { version = "0.27.0", default-features = false, features = ["http1", "logging", "tls12", "webpki-tokio"], optional = true }
  hyper-tls = { version = "0.6.0", optional = true }
  hyper-tungstenite = "0.19.0"
  hyper-util = { version="0.1.3", features = ["client-legacy", "server", "http1"] }
  moka = { version = "0.12.0", features = ["future"], optional = true }
  openssl = { version = "0.10.46", optional = true }
  rand = { version = "0.9.0", optional = true }
  rcgen = { version = "0.14.0", features = ["x509-parser"], optional = true }
  thiserror = "2.0.7"
  time = { version = "0.3.35", optional = true }
  tokio = { version = "1.24.2", features = ["macros", "rt"] }
  tokio-graceful = "0.2.0"
  tokio-native-tls = { version = "0.3.1", optional = true }
  tokio-rustls = { version = "0.26.0", features = ["logging", "tls12"] }
  tokio-tungstenite = "0.28.0"
  tokio-util = { version = "0.7.1", features = ["io"], optional = true }
  tracing = { version = "0.1.35", features = ["log"] }
  
  [dev-dependencies]
  async-http-proxy = { version = "1.2.5", features = ["runtime-tokio"] }
  criterion = { version = "0.7.0", features = ["async_tokio"] }
  reqwest = "0.12.0"
  rustls-native-certs = "0.8.0"
  rustls-pemfile = "2.0.0"
  tokio = { version = "1.24.2", features = ["full"] }
  tokio-native-tls = "0.3.1"
  tracing-subscriber = "0.3.8"
  x509-parser = "0.18.0"
  
  [features]
  decoder = ["dep:async-compression", "dep:tokio-util", "tokio/io-util"]
  default = ["decoder", "rcgen-ca", "rustls-client"]
  full = ["decoder", "http2", "native-tls-client", "openssl-ca", "rcgen-ca", "rustls-client"]
  http2 = ["hyper-util/http2", "hyper-rustls?/http2"]
  native-tls-client = ["dep:hyper-tls", "dep:tokio-native-tls", "tokio-tungstenite/native-tls"]
  openssl-ca = ["dep:openssl", "dep:moka"]
  rcgen-ca = ["dep:rcgen", "dep:moka", "dep:time", "dep:rand"]
  rustls-client = ["dep:hyper-rustls", "tokio-tungstenite/rustls-tls-webpki-roots"]
  
  [[example]]
  name = "log"
  required-features = ["rcgen-ca", "rustls-client"]
  
  [[example]]
  name = "noop"
  required-features = ["rcgen-ca", "rustls-client"]
  
  [[example]]
  name = "openssl"
  required-features = ["openssl-ca", "rustls-client"]
  
  [[test]]
  name = "openssl_ca"
  required-features = ["decoder", "openssl-ca", "native-tls-client", "rustls-client"]
  
  [[test]]
  name = "rcgen_ca"
  required-features = ["decoder", "rcgen-ca", "native-tls-client", "rustls-client"]
  
  [[test]]
  name = "websocket"
  required-features = ["decoder", "rcgen-ca", "native-tls-client", "rustls-client"]
  
  [[bench]]
  name = "certificate_authorities"
  harness = false
  required-features = ["openssl-ca", "rcgen-ca"]
  
  [[bench]]
  name = "decoder"
  harness = false
  required-features = ["decoder"]
  
  [[bench]]
  name = "proxy"
  harness = false
  required-features = ["rcgen-ca", "rustls-client"]
  
  [profile.bench]
  lto = true
  debug = true
  codegen-units = 1
  