[package]
name = "hickory-resolver"

# A short blurb about the package. This is not rendered in any format when
# uploaded to crates.io (aka this is not markdown)
description = """
Hickory DNS is a safe and secure DNS library. This Resolver library  uses the Client library to perform all DNS queries. The Resolver is intended to be a high-level library for any DNS record resolution see Resolver and AsyncResolver for supported resolution types. The Client can be used for other queries.
"""

# These URLs point to more information about the repository
documentation = "https://docs.rs/hickory-resolver"

# This points to a file in the repository (relative to this Cargo.toml). The
# contents of this file are stored and indexed in the registry.
readme = "README.md"

version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
homepage.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
license.workspace = true

[badges]
#github-actions = { repository = "bluejekyll/hickory", branch = "main", workflow = "test" }
codecov = { repository = "hickory-dns/hickory-dns", branch = "main", service = "github" }
maintenance = { status = "actively-developed" }

[features]
default = ["system-config", "tokio-runtime"]
#backtrace = ["dep:backtrace", "hickory-proto/backtrace"]
dns-over-native-tls = [
    "dns-over-tls",
    "tokio-native-tls",
    "hickory-proto/dns-over-native-tls",
]
# DNS over TLS with OpenSSL currently needs a good way to set default CAs, use rustls or native-tls
dns-over-openssl = [
    "dns-over-tls",
    "hickory-proto/dns-over-openssl",
    "tokio-openssl",
]
dns-over-rustls = [
    "dns-over-tls",
    "rustls",
    "tokio-rustls",
    "hickory-proto/dns-over-rustls",
]
dns-over-tls = ["tokio-runtime"]

# This requires some TLS library, currently only rustls is supported
dns-over-https-rustls = [
    "hickory-proto/dns-over-https-rustls",
    "dns-over-rustls",
    "dns-over-https",
]
dns-over-https = ["hickory-proto/dns-over-https"]
dns-over-quic = [
    "rustls/quic",
    "dns-over-rustls",
    "hickory-proto/dns-over-quic",
]
dns-over-h3 = ["dns-over-rustls", "hickory-proto/dns-over-h3"]

webpki-roots = ["dep:webpki-roots", "hickory-proto/webpki-roots"]
native-certs = ["dep:rustls-native-certs", "hickory-proto/native-certs"]

dnssec-openssl = ["dnssec", "hickory-proto/dnssec-openssl"]
dnssec-ring = ["dnssec", "hickory-proto/dnssec-ring"]
dnssec = []

serde-config = ["serde", "hickory-proto/serde-config"]
system-config = ["ipconfig", "resolv-conf"]

# # enables experimental the mDNS (multicast) feature
# TODO: we will be revisiting how mdns is built into the resolver...
#mdns = ["hickory-proto/mdns"]

testing = []
tokio-runtime = ["tokio/rt", "hickory-proto/tokio-runtime"]

[lib]
name = "hickory_resolver"
path = "src/lib.rs"

[dependencies]
#backtrace = { version = "0.3.50", optional = true }
cfg-if.workspace = true
futures-util = { workspace = true, default-features = false, features = [
    "std",
] }
lru-cache.workspace = true
once_cell.workspace = true
parking_lot.workspace = true
rand.workspace = true
resolv-conf = { workspace = true, optional = true, features = ["system"] }
rustls = { workspace = true, optional = true }
rustls-native-certs = { workspace = true, optional = true }
serde = { workspace = true, features = ["derive"], optional = true }
smallvec.workspace = true
thiserror.workspace = true
tracing.workspace = true
tokio = { workspace = true, optional = true }
tokio-native-tls = { workspace = true, optional = true }
tokio-openssl = { workspace = true, optional = true }
tokio-rustls = { workspace = true, optional = true }
hickory-proto = { workspace = true, default-features = false }
webpki-roots = { workspace = true, optional = true }

[target.'cfg(windows)'.dependencies]
ipconfig = { workspace = true, optional = true }

[dev-dependencies]
futures-executor = { workspace = true, default-features = false, features = [
    "std",
] }
tokio = { workspace = true, features = ["macros", "test-util"] }
tracing-subscriber = { workspace = true, features = [
    "std",
    "fmt",
    "env-filter",
] }

[package.metadata.docs.rs]
all-features = true
default-target = "x86_64-unknown-linux-gnu"
targets = ["x86_64-apple-darwin", "x86_64-pc-windows-msvc"]
rustdoc-args = ["--cfg", "docsrs"]

[[example]]
name = "custom_provider"
required-features = ["tokio-runtime"]

[[example]]
name = "flush_cache"
required-features = ["tokio-runtime", "system-config"]

[[example]]
name = "global_resolver"
required-features = ["tokio-runtime", "system-config"]

[[example]]
name = "multithreaded_runtime"
required-features = ["tokio-runtime", "system-config"]
