[package]
name = "sz-rust-core"
version = "0.2.0"
edition = "2021"
authors = ["SZ-Rust Team"]
license = "MIT"
description = "SZ-Rust 核心库:HTTP 服务器、路由、控制器、中间件,对标 ThinkPHP 8"
repository = "https://github.com/ljclz/sz-rust"
homepage = "https://github.com/ljclz/sz-rust"
keywords = ["web", "framework", "thinkphp", "axum", "orm"]
categories = ["web-programming", "web-programming::http-server"]

[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
serde_yaml = "0.9"
thiserror = "2"
once_cell = "1"
parking_lot = "0.12"
regex = "1"
chrono = { version = "0.4", features = ["serde"] }
indexmap = { version = "2", features = ["serde"] }
sz-orm-logger = "1.0.0"
sz-orm-macros = "1.0.0"
sz-orm-sql-validator = "1.0.0"
sz-orm-core = "1.0.0"
sz-orm-auth = "1.0.0"
sz-orm-limit = "1.0.0"
sz-orm-tracing = "1.0.0"
tracing = "0.1"
# Phase 1: HTTP 服务器 + 路由 + 请求/响应
axum = { version = "0.8", features = ["macros", "multipart", "ws", "http2"] }
tower = { version = "0.5", features = ["full"] }
tower-http = { version = "0.7", features = ["cors", "trace", "compression-gzip", "timeout", "fs"] }
hyper = "1"
tokio = { version = "1.40", features = ["full"] }
http = "1"
http-body-util = "0.1"
# Phase 1.10: HTTP/2 + TLS
rustls = { version = "0.23", features = ["ring", "std", "logging"] }
tokio-rustls = { version = "0.26", features = ["ring"] }
rustls-pemfile = "2"
# Phase 5.5: 文件上传
sha1 = "0.10"
sha2 = "0.10"
md-5 = "0.10"
hex = "0.4"
mime_guess = "2"
infer = "0.16"
tempfile = "3"
# Phase 5.7: 存储对接(复用 sz-orm-storage 7 种驱动)
sz-orm-storage = "1.0.0"
async-trait = "0.1"
rand = "0.8"
# Phase 5.8: 图像处理(对齐 PHP Grafika\Gd\Editor + Image + Color + Position)
image = "0.25"
imageproc = "0.25"
ab_glyph = "0.2"
# Phase 9: Swoole/Worker 适配(tokio 替代)
sz-orm-queue = "1.0.0"
sz-orm-mqtt = "1.0.0"
sz-orm-websocket = { version = "1.0.0", features = ["server"] }
sz-orm-scheduler = "1.0.0"
tokio-util = { version = "0.7", features = ["rt"] }
num_cpus = "1"
futures = "0.3"

[dev-dependencies]
tokio = { version = "1.40", features = ["full", "macros", "rt-multi-thread"] }
serde_json = { version = "1", features = ["preserve_order"] }
tower = { version = "0.5", features = ["full", "util"] }
http-body-util = "0.1"
rcgen = "0.13"
sz-rust-macros = "0.2.0"
criterion = { version = "0.5", features = ["html_reports"] }

[lib]
name = "sz_rust_core"
path = "src/lib.rs"

[[test]]
name = "soak"
path = "tests/soak.rs"

[[test]]
name = "fuzz"
path = "tests/fuzz.rs"

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