pgwire-replication 0.2.0

Tokio-based Postgres wire-protocol logical replication client (pgoutput) with TLS and SCRAM.
Documentation
[package]
name = "pgwire-replication"
version = "0.2.0"
edition = "2021"
rust-version = "1.88"
resolver = "2"
license = "Apache-2.0 OR MIT"

authors = ["Vahid Negahdari <vahid.negahdari@gmail.com>"]
description = "Tokio-based Postgres wire-protocol logical replication client (pgoutput) with TLS and SCRAM."
keywords = [
    "postgres",
    "pgoutput",
    "replication",
    "wal",
    "pgwire",
]
categories = ["database", "network-programming", "asynchronous"]
repository = "https://github.com/vnvo/pgwire-replication"
homepage = "https://github.com/vnvo/pgwire-replication"
documentation = "https://docs.rs/pgwire-replication"
readme = "README.md"
exclude = ["Cargo.lock"]


[features]
default = ["tls-rustls", "scram"]
tls-rustls = [
    "dep:rustls",
    "dep:tokio-rustls",
    "dep:webpki-roots",
    "dep:rustls-pemfile",
]
scram = ["dep:base64", "dep:hmac", "dep:sha2", "dep:rand"]
md5 = ["dep:md5"]
integration-tests = [
    "dep:testcontainers",
    "dep:tokio-postgres",
    "dep:tracing-subscriber",
]

[dependencies]
bytes = "1"
tokio = { version = "1", features = [
    "net",
    "io-util",
    "time",
    "macros",
    "rt-multi-thread",
    "sync",
] }
tokio-util = "0.7"
thiserror = "1"
anyhow = "1"
tracing = "0.1"

# Optional TLS
rustls = { version = "0.23", features = ["ring"], optional = true }
tokio-rustls = { version = "0.26", optional = true }
webpki-roots = { version = "0.26", optional = true }
rustls-pemfile = { version = "2", optional = true }

# Optional auth
base64 = { version = "0.22", optional = true }
hmac = { version = "0.12", optional = true }
sha2 = { version = "0.10", optional = true }
rand = { version = "0.9", optional = true }
md5 = { version = "0.7", optional = true }

testcontainers = { version = "0.25", optional = true }
tokio-postgres = { version = "0.7", optional = true }
tracing-subscriber = { version = "0.3", optional = true, features = [
    "env-filter",
] }

[dev-dependencies]
hex = "0.4"
proptest = "1"
tempfile = "3"
tokio-postgres = "0.7"

criterion = { version = "0.5", features = ["html_reports"] }

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[[bench]]
name = "protocol_bench"
harness = false

[[example]]
name = "with_tls"
path = "examples/with_tls.rs"
required-features = ["tls-rustls"]

[[example]]
name = "with_mtls"
path = "examples/with_mtls.rs"
required-features = ["tls-rustls"]