[package]
name = "anvilforge-core"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Anvilforge core: routing, middleware, container, request/response, error type, runtime cross-cutting concerns."
readme = "../../README.md"
keywords = ["web", "framework", "laravel", "axum", "anvilforge"]
categories = ["web-programming", "web-programming::http-server"]

[lib]
name = "anvil_core"

[dependencies]
tokio = { workspace = true }
tokio-util = { workspace = true }
axum = { workspace = true }
axum-server = { workspace = true }
tower = { workspace = true }
tower-http = { workspace = true }
tower-sessions = { workspace = true }
hyper = { workspace = true }
http = { workspace = true }
rustls-pemfile = { workspace = true }
rustls = { workspace = true }
reqwest = { workspace = true }
toml = { workspace = true }
ipnet = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_urlencoded = { workspace = true }
thiserror = { workspace = true }
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
dotenvy = { workspace = true }
async-trait = { workspace = true }
futures = { workspace = true }
pin-project-lite = { workspace = true }
sqlx = { workspace = true }
argon2 = { workspace = true }
totp-rs = { workspace = true }
rand = { workspace = true }
sha2 = { workspace = true }
hmac = { workspace = true }
base64 = { workspace = true }
garde = { workspace = true }
moka = { workspace = true }
redis = { workspace = true }
object_store = { workspace = true }
lettre = { workspace = true }
cron = { workspace = true }
chrono = { workspace = true }
uuid = { workspace = true }
once_cell = { workspace = true }
parking_lot = { workspace = true }
inventory = { workspace = true }
typetag = { workspace = true }
url = { workspace = true }
bytes = { workspace = true }
mime = { workspace = true }
regex = { workspace = true }
indexmap = { workspace = true }
anvilforge-templates = { workspace = true }
anvilforge-cast-core = { workspace = true }
askama = { workspace = true }
mime_guess = { workspace = true }
notify = { workspace = true }
rust-embed = { workspace = true, optional = true }

[features]
default = []
# When enabled, scaffolded apps can register a `rust_embed::RustEmbed` impl as
# the source for a static-file mount via `server::register_embedded_assets`,
# baking `public/` into the binary at compile time instead of shipping a folder.
embed-assets = ["dep:rust-embed"]

[dev-dependencies]
http-body-util = { workspace = true }
tempfile = "3"
