[workspace]
members = ["crates/gilt-derive"]

[package]
name = "gilt"
version = "0.12.0"
edition = "2021"
exclude = [".claude/", ".review/", "vlc.zip"]
description = "Fast, beautiful terminal formatting for Rust — styles, tables, trees, syntax highlighting, progress bars, markdown."
license = "MIT"
repository = "https://github.com/khalidelborai/gilt"
homepage = "https://github.com/khalidelborai/gilt"
documentation = "https://docs.rs/gilt"
readme = "README.md"
keywords = ["terminal", "rich", "formatting", "ansi", "cli"]
categories = ["command-line-interface", "text-processing"]
rust-version = "1.82.0"

[dependencies]
thiserror = "2"
unicode-width = "0.2"
regex = "1"
serde = { version = "1", optional = true }
serde_json = { version = "1", optional = true }
pulldown-cmark = { version = "0.12", optional = true }
log = { version = "0.4", features = ["std"], optional = true }
syntect = { version = "5", default-features = false, features = ["default-syntaxes", "default-themes", "regex-fancy"], optional = true }
rpassword = { version = "7", optional = true }
gilt-derive = { version = "0.12.0", path = "crates/gilt-derive", optional = true }
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["registry"], optional = true }
miette = { version = "7", optional = true }
eyre = { version = "0.6", optional = true }
rustyline = { version = "15", optional = true }
anstyle = { version = "1", optional = true }
csv = { version = "1", optional = true }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "fs"], optional = true }
reqwest = { version = "0.12", features = ["json", "stream"], optional = true }
futures-core = { version = "0.3", optional = true }
futures-util = { version = "0.3", optional = true }
bytes = { version = "1", optional = true }
compact_str = "0.8"
lru = "0.12"
arc-swap = "1"

[features]
default = ["json", "markdown", "syntax", "interactive", "logging"]
json = ["dep:serde", "dep:serde_json"]
markdown = ["dep:pulldown-cmark"]
syntax = ["dep:syntect"]
interactive = ["dep:rpassword"]
logging = ["dep:log"]
tracing = ["dep:tracing", "dep:tracing-subscriber"]
derive = ["dep:gilt-derive"]
miette = ["dep:miette"]
eyre = ["dep:eyre"]
readline = ["dep:rustyline"]
anstyle = ["dep:anstyle"]
csv = ["dep:csv"]
async = ["dep:tokio", "dep:futures-core", "dep:futures-util"]
http = ["dep:reqwest", "dep:bytes", "async", "json"]

[dev-dependencies]
pretty_assertions = "1"
criterion = { version = "0.5", features = ["html_reports"] }
proptest = "1"

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

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