[package]
license = "Apache-2.0"
name = "kigi-codebase-graph"
version.workspace = true
edition.workspace = true
description = "High-performance code graph generation using tree-sitter queries"

[features]
default = []

[[bin]]
name = "code-graph"
path = "src/bin/code_graph.rs"

[[bin]]
name = "bench_index"
path = "src/bin/bench_index.rs"

[[bin]]
name = "bench_file_listing"
path = "src/bin/bench_file_listing.rs"

[dependencies]
# Path utilities
dunce = { workspace = true }
kigi-paths = { path = "../kigi-paths" }
# Graph generation
petgraph = { workspace = true }
serde = { workspace = true, features = ["rc"] }
serde_json = { workspace = true, features = ["preserve_order"] }
# Parallel processing
rayon = { workspace = true }
crossbeam = { workspace = true }
num_cpus = { workspace = true }
# Directory walking with gitignore support
ignore = { workspace = true }
# Git repository access
git2 = { workspace = true }
# Fast allocators for multi-threaded workloads
mimalloc = "0.1"
# Fast hash for better HashMap performance
ahash = { version = "0.8", features = ["serde"] }
# Additional hash utilities for StringInterner
hashbrown = "0.15"
nohash-hasher = "0.2"
rustc-hash = { workspace = true }
smallvec = { workspace = true }
# CLI argument parsing
clap = { version = "4", features = ["derive"] }
# Async runtime (for oneshot channels, sync feature for blocking_recv)
tokio = { workspace = true, features = ["sync"] }
# Logging
tracing = { workspace = true }
# Lazy static initialization
once_cell = { workspace = true }
# Concurrent hash map for deduplication registries
dashmap = { workspace = true }
# Parsing, keeping it here to avoid pollution
tree-sitter = "0.25.10"
tree-sitter-rust = "0.24.0"
tree-sitter-typescript = "0.23.2"
tree-sitter-python = "0.25.0"
tree-sitter-go = "0.25.0"
tree-sitter-javascript = "0.25.0"

# Unix process checking for lock staleness detection
[target.'cfg(unix)'.dependencies]
libc = { workspace = true }

[dev-dependencies]
serial_test = { workspace = true }
tempfile = "3"

[lints]
workspace = true
