[package]
name = "adler-core"
description = "Core engine for the Adler OSINT username-search tool."
documentation = "https://docs.rs/adler-core"
keywords = ["osint", "username", "reconnaissance", "sherlock", "search"]
categories = ["web-programming::http-client", "command-line-utilities"]
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
readme.workspace = true

[dependencies]
async-trait.workspace = true
# Only present to unify the feature flags on the transitive
# async-tungstenite that chromiumoxide uses — we never call it directly.
async-tungstenite.workspace = true
chromiumoxide.workspace = true
fastrand.workspace = true
futures.workspace = true
image.workspace = true
regex.workspace = true
reqwest.workspace = true
scraper.workspace = true
secrecy.workspace = true
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
tokio = { workspace = true }
tracing.workspace = true
url.workspace = true
# Phase 2 — optional TLS-fingerprint impersonation. `wreq` + BoringSSL
# is heavy (cmake + a C++ compiler + libclang at build time), so the
# feature is opt-in. Without it the build stays toolchain-light.
wreq = { workspace = true, optional = true }
wreq-util = { workspace = true, optional = true }

[features]
# Enable the impersonating HTTP transport: sites with a pure
# `TlsFingerprint` protection are routed through a `wreq` client
# emulating Chrome instead of either raw HTTP (would be blocked) or
# the heavyweight browser backend (slow). Builds require cmake, a C++
# compiler, and libclang.
impersonate = ["dep:wreq", "dep:wreq-util"]

[dev-dependencies]
criterion.workspace = true
insta.workspace = true
proptest.workspace = true
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "test-util"] }
wiremock.workspace = true

[lints]
workspace = true

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

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

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

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