[package]
name = "thread-flow"
version = "0.1.0"
edition.workspace = true
rust-version.workspace = true
description = "Thread dataflow integration for data processing pipelines, using CocoIndex."
readme = "README.md"
repository.workspace = true
license.workspace = true
keywords = ["analysis", "ast", "caching", "dataflow", "incremental"]
categories = ["algorithms", "caching", "development-tools", "parsing"]
[[example]]
name = "d1_local_test"
path = "examples/d1_local_test/main.rs"
[[example]]
name = "d1_integration_test"
path = "examples/d1_integration_test/main.rs"
[[example]]
name = "observability_example"
path = "examples/observability_example.rs"
[[bench]]
harness = false
name = "parse_benchmark"
[[bench]]
harness = false
name = "fingerprint_benchmark"
[[bench]]
harness = false
name = "d1_profiling"
[[bench]]
harness = false
name = "load_test"
[dependencies]
async-trait = { workspace = true }
base64 = "0.22"
bytes = "1.10"
deadpool-postgres = { version = "0.14", optional = true }
env_logger = "0.11"
futures = { workspace = true }
log = "0.4"
metrics = "0.24"
mimalloc = { workspace = true, optional = true }
moka = { version = "0.12", features = ["future"], optional = true }
rayon = { workspace = true, optional = true }
recoco = { version = "0.2.1", default-features = false, features = [
"source-local-file",
] }
reqwest = { version = "0.12", features = ["json"] }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
thread-ast-engine = { workspace = true }
thread-language = { workspace = true, features = [
"go",
"javascript",
"matching",
"python",
"rust",
"tsx",
"typescript",
] }
thread-services = { workspace = true, features = [
"ast-grep-backend",
"serialization",
] }
thread-utilities = { workspace = true, features = ["hashers"] }
tokio = { workspace = true }
tokio-postgres = { version = "0.7", optional = true }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = [
"env-filter",
"fmt",
"json",
] }
tree-sitter = { workspace = true }
[dev-dependencies]
criterion = "0.8.2"
deadpool-postgres = "0.14"
md5 = "0.8"
metrics-exporter-prometheus = "0.18"
rusqlite = { version = "0.32.1", features = ["bundled"] }
tempfile = "3.13"
testcontainers = "0.27.1"
testcontainers-modules = { version = "0.15.0", features = ["postgres"] }
tokio-postgres = "0.7"
[features]
default = ["mimalloc", "parallel", "postgres-backend", "recoco-minimal"]
caching = ["dep:moka"]
d1-backend = []
mimalloc = ["dep:mimalloc"]
parallel = ["dep:rayon"]
postgres-backend = [
"dep:deadpool-postgres",
"dep:tokio-postgres",
"recoco-postgres",
]
recoco-minimal = ["recoco/source-local-file"]
recoco-postgres = [
"recoco-minimal",
"recoco/target-postgres",
]
worker = [
"thread-ast-engine/worker",
"thread-language/worker",
"thread-services/worker",
"thread-utilities/worker"
]