[package] name = "lychee-lib" authors = ["Matthias Endler "] description = "A fast, async link checker" documentation = "https://docs.rs/lychee_lib" edition = "2021" homepage = "https://github.com/lycheeverse/lychee" keywords = ["link", "checker", "cli", "link-checker", "validator"] license = "Apache-2.0 OR MIT" repository = "https://github.com/lycheeverse/lychee" readme = "../README.md" version.workspace = true [dependencies] async-stream = "0.3.6" async-trait = "0.1.84" cached = "0.54.0" check-if-email-exists = { version = "0.9.1", optional = true } cookie_store = "0.21.1" email_address = "0.2.9" futures = "0.3.31" glob = "0.3.2" headers = "0.4.0" html5ever = "0.29.0" html5gum = "0.7.0" http = "1.2.0" hyper = "1.5.2" ignore = "0.4.23" ip_network = "0.4.1" linkify = "0.10.0" log = "0.4.22" octocrab = "0.42.1" once_cell = "1.20.2" openssl-sys = { version = "0.9.104", optional = true } path-clean = "1.0.1" percent-encoding = "2.3.1" pulldown-cmark = "0.12.2" regex = "1.11.1" # Use trust-dns to avoid lookup failures on high concurrency # https://github.com/seanmonstar/reqwest/issues/296 reqwest = { version = "0.12.9", default-features = false, features = [ "gzip", "trust-dns", "cookies", ] } reqwest_cookie_store = { version = "0.8.0", features = ["serde"] } # Make build work on Apple Silicon. # See https://github.com/briansmith/ring/issues/1163 # This is necessary for the homebrew build # https://github.com/Homebrew/homebrew-core/pull/70216 ring = "0.17.8" secrecy = "0.10.3" serde = { version = "1.0.217", features = ["derive"] } serde_with = "3.12.0" shellexpand = "3.1.0" thiserror = "2.0.9" tokio = { version = "1.42.0", features = ["full"] } toml = "0.8.19" typed-builder = "0.20.0" url = { version = "2.5.4", features = ["serde"] } [dependencies.par-stream] version = "0.10.2" features = ["runtime-tokio"] [dev-dependencies] doc-comment = "0.3.3" tempfile = "3.15.0" wiremock = "0.6.2" serde_json = "1.0.134" rstest = "0.24.0" toml = "0.8.19" pretty_assertions = "1.4.0" [features] # Enable checking email addresses. Requires the native-tls feature. email-check = ["check-if-email-exists"] # Use platform-native TLS. native-tls = ["openssl-sys", "reqwest/native-tls"] # Use Rustls TLS. rustls-tls = ["reqwest/rustls-tls-native-roots"] # Compile and statically link a copy of OpenSSL. vendored-openssl = ["openssl-sys/vendored"] # Feature flag to include checking reserved example domains # as per RFC 2606, section 3. # This flag is off by default and only exists to allow example domains in # integration tests, which don't respect `#[cfg(test)]`. # See https://users.rust-lang.org/t/36630 check_example_domains = [] default = ["native-tls", "email-check"]