content: [package]
  name = "fe2o3-amqp"
  version = "0.14.0"
  edition = "2021"
  description = "An implementation of AMQP1.0 protocol based on serde and tokio"
  license = "MIT/Apache-2.0"
  documentation = "https://docs.rs/fe2o3-amqp/"
  homepage = "https://github.com/minghuaw/fe2o3-amqp"
  repository = "https://github.com/minghuaw/fe2o3-amqp"
  keywords = ["amqp", "serde", "tokio"]
  readme = "Readme.md"
  rust-version = "1.75.0"
  
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  
  [package.metadata.docs.rs]
  all-features = true
  rustdoc-args = ["--cfg", "docsrs"]
  
  [features]
  # dev defaults
  default = [
      # "acceptor",
      # "rustls",
      # "native-tls",
      # "transaction",
      # "scram",
  ]
  
  transaction = ["fe2o3-amqp-types/transaction", "uuid"]
  
  # TLS related features
  rustls = ["tokio-rustls", "librustls", "webpki-roots", "ring"]
  native-tls = ["tokio-native-tls", "libnative-tls"]
  
  # Listener implementation
  acceptor = []
  
  # SASL SCRAM
  scram = ["sha-1", "sha2", "rand", "base64", "stringprep", "hmac", "pbkdf2"]
  
  [dependencies]
  serde_amqp.workspace = true
  fe2o3-amqp-types.workspace = true
  
  bytes.workspace = true
  tokio-util = { workspace = true, features = ["codec"] } # tokio-rs/tokio#4816
  thiserror.workspace = true
  serde.workspace = true
  futures-util = { workspace = true, features = ["sink"] }
  pin-project-lite.workspace = true
  url.workspace = true
  slab.workspace = true
  serde_bytes.workspace = true
  parking_lot = { workspace = true, features = ["send_guard"] }
  
  # Optinoal deps that are feature themselves
  tracing = { workspace = true, optional = true }
  log = { workspace = true, optional = true }
  
  # Optional deps
  sha-1 = { workspace = true, optional = true }
  sha2 = { workspace = true, optional = true }
  rand = { workspace = true, optional = true }
  base64 = { workspace = true, optional = true } # TODO: replace with base64-simd?
  stringprep = { workspace = true, optional = true }
  hmac = { workspace = true, optional = true }
  pbkdf2 = { workspace = true, optional = true }
  webpki-roots = { workspace = true, optional = true }
  tokio-rustls = { workspace = true, features = ["logging", "tls12", "ring"], optional = true }
  librustls = { workspace = true, features = ["logging", "std", "tls12", "ring"], optional = true }
  
  [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
  uuid = { workspace = true, features = ["v4"], optional = true }
  tokio = { workspace = true, features = ["sync", "io-util", "net", "rt", "macros", "time"] }
  libnative-tls = { workspace = true, optional = true }
  tokio-native-tls = { workspace = true, optional = true }
  ring = { workspace = true, default-features = false, optional = true }
  tokio-stream = { workspace = true, features = ["time"] }
  
  [target.'cfg(target_arch = "wasm32")'.dependencies]
  uuid = { workspace = true, features = ["v4", "rng-getrandom"], optional = true }
  tokio = { workspace = true, features = ["sync", "io-util", "rt", "macros"] } # "net" feature doesn't support wasm32
  ring = { workspace = true, default-features = false, features = ["wasm32_unknown_unknown_js"], optional = true }
  getrandom = { workspace = true, features = ["wasm_js"] }
  wasmtimer.workspace = true
  
  [dev-dependencies]
  tokio-test.workspace = true
  testcontainers.workspace = true
  fe2o3-amqp-ext = { workspace = true }
  
  [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
  tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "parking_lot"] }
  
  [target.'cfg(target_arch = "wasm32")'.dev-dependencies]
  tokio = { workspace = true, features = ["rt", "macros", "parking_lot"]}
  getrandom = { workspace = true, features = ["wasm_js"] }
  