[package]
name = "gotcha"
description = "Enhanced web framework built on top of Axum with OpenAPI, metrics, and configuration management"
edition = "2021"
version = "0.4.0"
license = "MIT"
repository = "https://github.com/Kilerd/gotcha/"
readme = "README.md"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[lib]
doctest = true
[features]
default = ["http1"]
http1 = ["axum/http1", "axum/tokio"]
prometheus = ["dep:axum-prometheus"]
openapi = ["dep:oas", "dep:gotcha_core", "gotcha_core/axum"]
cors = ["dep:tower-http", "tower-http/cors"]
static_files = ["dep:tower-http", "tower-http/fs"]
task = ["dep:cron", "tokio/time"]
[dependencies]
async-trait = "0.1.60"
gotcha_macro = { version = "0.4", path = "../gotcha_macro" }
gotcha_core = { version = "0.4", path = "../gotcha_core", optional = true }
serde = {version = "1", features = ["derive"]}
tokio = {version = "1", features = ["rt"]}
tracing = "0.1"
tracing-subscriber = {version="0.3", features=["env-filter"]}
log = "0.4"
cron = {version = "0.12.0", optional = true}
chrono = "0.4.23"
oas = { version = "0.1", optional = true }
mofa = "0.2"
axum = { version = "0.8", default-features = false, features = ["form", "json", "query", "multipart", "ws", "matched-path", "original-uri"] }
axum-extra = { version = "0.10", default-features = false, features = ["typed-header"] }
tower-layer = "0.3.2"
tower-service = "0.3.2"
inventory = "0.3.15"
either = "1.13.0"
convert_case = "0.6.0"
once_cell = "1"
axum-prometheus = { version = "0.8", optional = true }
axum-macros = "0.5"
tower-http = { version = "0.6", optional = true, default-features = false }
cfg-if = { workspace = true }
thiserror = "1.0"
serde_json = "1"
bigdecimal = "0.4"
rust_decimal = "1.36"
uuid = {version = "1.10" }
regex = "1.7"
validator = { version = "0.20", features = ["derive"] }
[dev-dependencies]
trybuild = "1.0"
assert-json-diff = "2"
gotcha_core = { version = "0.4", path = "../gotcha_core" }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
futures-core = "0.3.33"
futures-util = "0.3.33"
tower = "0.5.3"