[package]
name = "lua-astra"
version = "0.50.0"
authors = ["Elham Aryanpur <elhamaryanpur5@gmail.com>"]
description = "🔥 Blazingly Fast 🔥 runtime environment for Lua"
documentation = "https://astra.arkforge.net"
repository = "https://github.com/ArkForgeLabs/Astra"
keywords = ["lua", "scripting", "server", "webserver", "runtime"]
categories = [
  "web-programming",
  "command-line-utilities",
  "command-line-interface",
  "network-programming",
]
edition = "2024"
license = "Apache-2.0"
exclude = [".github", "examples", "docs", "tests"]
rust-version = "1.94"

[[bin]]
name = "astra"
path = "src/main.rs"

[features]
default = ["luajit"]
luajit = ["mlua/luajit"]
luajit52 = ["mlua/luajit52"]
luau = ["mlua/luau", "mlua/luau-jit"]
lua51 = ["mlua/lua51"]
lua52 = ["mlua/lua52"]
lua53 = ["mlua/lua53"]
lua54 = ["mlua/lua54"]
lua55 = ["mlua/lua55"]

[dependencies]
mlua = { version = "0.11.6", features = [
  "serialize",
  "vendored",
  "async",
  "send",
  "error-send",
  "macros",
  "anyhow",
] }

# http
axum = { version = "0.8.9", features = ["macros", "multipart", "http2", "ws"] }
axum-extra = { version = "0.12.6", features = ["cookie"] }
reqwest = { version = "0.13.4", features = [
  "json",
  "rustls",
  "charset",
  "multipart",
  "http2",
  "stream",
  "form",
], default-features = false }
reqwest-websocket = "0.6.0"
tower = { version = "0.5.3" }
tower-http = { version = "0.6.11", features = [
  "fs",
  "trace",
  "compression-full",
  "decompression-full",
  "set-header",
] }
time = "0.3.47"
minijinja = { version = "2.20.0", features = [
  "loader",
  "urlencode",
  "loop_controls",
  "speedups",
] }
glob = "0.3.3"

# data formats
serde = { version = "1.0.228", features = ["derive"] }
serde-value = { version = "0.7.0" }
serde_json = { version = "1.0.150" }
serde_json5 = { version = "0.2.1" }
serde_yaml = { version = "0.9.34" }
serde_ini = { version = "0.2.0" }
csv = { version = "1.4.0" }
quick-xml = { version = "0.40.1", features = [
  "async-tokio",
  "encoding",
  "escape-html",
  "overlapped-lists",
  "serialize",
] }
toml = { version = "1.1.2" }
uuid = { version = "1.23.2", features = ["serde", "v4"] }
sha2 = "0.11.0"
sha3 = "0.12.0"
base64 = "0.22.1"
bytes = { version = "1.11.1", features = ["serde"] }
chrono = { version = "0.4.45", features = ["serde"] }
markdown = { version = "1.0.0", features = ["serde"] }

# runtime
tokio = { version = "1.52.3", features = [
  "macros",
  "signal",
  "rt-multi-thread",
] }
futures = "0.3.32"
clap = { version = "4.6.1", features = ["cargo", "derive"] }
dotenvy = "0.15.7"
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
version-compare = "0.2.1"
regex = "1.12.3"
pastey = "0.2.3"

# database
sqlx = { version = "0.9.0", features = [
  "runtime-tokio",
  "tls-rustls",
  "postgres",
  "sqlite",
  "json",
  "chrono",
  "uuid",
] }
include_dir = "0.7.4"

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
overflow-checks = false
strip = true
debug = 0
[profile.release.package."*"]
opt-level = 3
codegen-units = 1
strip = true
