[package]
name = "hotpath-meta"
version = "0.18.0"
edition = "2021"
description = "Hotpath meta - a version of hotpath used to profile the profiler itself. Not intended for external use."
repository = "https://github.com/pawurb/hotpath-rs"
readme = "README.md"
license = "MIT"
categories = ["development-tools"]

[[bin]]
name = "hotpath-samply-meta"
path = "bin/hotpath-samply-meta/main.rs"

[features]
default = ["threads"]
hotpath-meta = [
  "hotpath-macros-meta/hotpath-meta",
  "dep:arc-swap",
  "dep:base64",
  "dep:cfg-if",
  "dep:crossbeam-channel",
  "dep:hdrhistogram",
  "dep:prettytable-rs",
  "dep:quanta",
  "dep:serde",
  "dep:serde_json",
  "dep:tiny_http",
  "dep:futures-util",
  "dep:pin-project-lite",
  "dep:regex",
  "dep:libc",
]
hotpath-alloc-meta = ["dep:tokio"]
hotpath-alloc = []
hotpath-off-meta = ["hotpath-macros-meta/hotpath-off-meta"]
hotpath-cpu-meta = ["dep:object", "dep:rustc-demangle", "dep:flate2", "dep:serde", "dep:serde_json"]
tui = ["dep:serde", "dep:serde_json", "dep:eyre", "dep:clap", "dep:prettytable-rs", "dep:reqwest", "dep:crossterm", "dep:ratatui", "dep:base64", "dep:regex", "dep:crossbeam-channel", "dep:tokio", "tokio/rt", "crossbeam"]
tokio = ["dep:tokio", "tokio/sync", "tokio/macros", "tokio/rt-multi-thread"]
futures = ["dep:tokio", "tokio/sync", "tokio/macros", "tokio/rt-multi-thread", "dep:futures-channel"]
async-channel = ["dep:tokio", "tokio/sync", "tokio/macros", "tokio/rt-multi-thread", "dep:async-channel"]
crossbeam = []
flume = ["dep:flume", "dep:tokio", "tokio/rt-multi-thread"]
threads = []
dev-meta = ["dep:time"]
hotpath-mcp-meta = ["hotpath-meta", "dep:rmcp", "dep:tokio", "tokio/rt", "tokio/net", "dep:axum", "dep:tokio-util", "dep:schemars"]

[dependencies]
arc-swap = { version = "1.7", optional = true }
base64 = { version = "0.22", optional = true }
cfg-if = { version = "1.0", optional = true }
clap = { version = "4", features = ["derive"], optional = true }
crossbeam-channel = { version = "0.5", optional = true }
flume = { version = "0.12.0" , optional = true }
crossterm = { version = "0.29", optional = true }
eyre = { version = "0.6", optional = true }
hdrhistogram = { version = "7", default-features = false, optional = true }
hotpath-macros-meta = { workspace = true }
prettytable-rs = { version = "0.10", default-features = false, optional = true }
quanta = { version = "0.12", optional = true }
ratatui = { version = "0.29", optional = true }
serde = { version = "1.0.130", features = ["derive"], optional = true }
serde_json = { version = "1.0", optional = true }
tiny_http = { version = "0.12", optional = true }
tokio = { version = "1", features = ["rt"], optional = true }
ureq = { version = "3", features = ["json"], optional = true }
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"], optional = true }
futures-channel = { version = "0.3", features = ["sink"], optional = true }
async-channel = { version = "2", optional = true }
futures-util = { version = "0.3", features = ["sink"], optional = true }
pin-project-lite = { version = "0.2.12", optional = true }
regex = { version = "1", optional = true }
libc = { version = "0.2.150", optional = true }
time = { version = "0.3", features = ["formatting", "local-offset", "macros"], optional = true }
rmcp = { version = "0.13", features = ["server", "transport-streamable-http-server", "transport-streamable-http-server-session"], optional = true }
schemars = { version = "1", optional = true }
axum = { version = "0.8", optional = true }
tokio-util = { version = "0.7", optional = true }
object = { version = "0.36", default-features = false, features = ["read", "std"], optional = true }
rustc-demangle = { version = "0.1", optional = true }
flate2 = { version = "1", optional = true }

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] }

[dev-dependencies]
serde_json = "1.0"
ureq = { version = "3", features = ["json"] }
base64 = "0.22"
