[package]
name = "stygian-graph"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
documentation = "https://greysquirr3l.github.io/stygian"
description = "High-performance graph-based web scraping engine with AI extraction, multi-modal support, and anti-bot capabilities"
keywords = ["scraping", "web-scraping", "graph", "ai", "extraction"]
categories = ["web-programming", "network-programming", "asynchronous"]
readme = "README.md"
[dependencies]
tokio = { workspace = true, features = ["full"] }
tokio-util = { workspace = true }
futures.workspace = true
async-trait.workspace = true
rayon.workspace = true
thiserror.workspace = true
anyhow.workspace = true
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
toml.workspace = true
reqwest = { workspace = true, features = ["rustls", "json", "query", "cookies", "gzip", "brotli"] }
tokio-tungstenite.workspace = true
scraper.workspace = true
petgraph.workspace = true
tracing.workspace = true
tracing-subscriber = { workspace = true, features = ["env-filter", "json"] }
ulid.workspace = true
parking_lot.workspace = true
dashmap.workspace = true
lru.workspace = true
base64.workspace = true
figment.workspace = true
clap.workspace = true
indicatif.workspace = true
prometheus-client.workspace = true
axum.workspace = true
tower-http.workspace = true
uuid.workspace = true
hmac.workspace = true
sha2.workspace = true
csv.workspace = true
feed-rs.workspace = true
quick-xml.workspace = true
flate2.workspace = true
openapiv3.workspace = true
serde_yaml.workspace = true
indexmap.workspace = true
stygian-browser = { path = "../stygian-browser", version = "0.5", optional = true }
wasmtime = { workspace = true, optional = true }
sqlx = { workspace = true, optional = true }
redis = { workspace = true, optional = true }
deadpool-redis = { workspace = true, optional = true }
rust-s3 = { workspace = true, optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["test-util", "macros"] }
tokio-test = "0.4"
tower = { version = "0.5", features = ["util"] }
proptest.workspace = true
mockall.workspace = true
tempfile = "3"
criterion.workspace = true
[[bench]]
name = "pipeline_bench"
harness = false
[features]
default = ["browser"]
browser = ["dep:stygian-browser"]
full = ["browser", "api", "wasm-plugins", "postgres", "cloudflare-crawl", "redis", "object-storage"]
redis = ["dep:redis", "dep:deadpool-redis"]
object-storage = ["dep:rust-s3"]
api = []
wasm-plugins = ["dep:wasmtime"]
postgres = ["dep:sqlx"]
cloudflare-crawl = []
escalation = []
mcp = []
[[bin]]
name = "stygian"
path = "src/bin/stygian.rs"
required-features = []
[[bin]]
name = "stygian-api"
path = "src/bin/stygian-api.rs"
required-features = []