[package]
name = "allframe-core"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true
description = "AllFrame core - complete web framework with HTTP/2 server, REST/GraphQL/gRPC, DI, CQRS"
readme = "README.md"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
targets = ["x86_64-unknown-linux-gnu"]
[features]
default = ["di", "openapi", "router", "otel", "health"]
di = ["allframe-macros"]
openapi = []
health = ["hyper", "hyper-util"]
otel = ["allframe-macros", "tracing"]
otel-otlp = [
"otel",
"opentelemetry",
"opentelemetry_sdk",
"opentelemetry-otlp",
"tracing-opentelemetry",
"tracing-subscriber",
]
router = []
router-graphql = ["router", "async-graphql", "async-graphql-parser"]
router-grpc = [
"router",
"tonic",
"tonic-reflection",
"tonic-health",
"prost",
"prost-types",
"tonic-build",
"tokio-stream",
"futures",
]
router-full = ["router-graphql", "router-grpc"]
router-grpc-tls = [
"router-grpc",
"tonic/tls-ring",
"tonic/tls-native-roots",
"rustls-pemfile",
"tokio-rustls",
]
http-client = ["reqwest"]
metrics = ["prometheus"]
cache-memory = ["moka", "dashmap"]
cache-redis = ["redis"]
rate-limit = ["governor"]
resilience = ["allframe-macros", "backoff", "governor", "dashmap", "parking_lot", "rand"]
resilience-redis = ["resilience", "redis"]
security = ["allframe-macros", "url"]
auth = []
auth-jwt = ["auth", "jsonwebtoken", "chrono"]
auth-axum = ["auth", "tower", "hyper"]
auth-tonic = ["auth", "router-grpc"]
utils = ["chrono", "url", "parking_lot", "rand"]
cqrs = ["allframe-macros"]
cqrs-allsource = ["cqrs", "allsource-core", "chrono"]
cqrs-postgres = ["cqrs-allsource", "allsource-core/postgres"]
cqrs-rocksdb = ["cqrs-allsource", "allsource-core/rocksdb-storage"]
cqrs-sqlite = ["cqrs", "rusqlite"]
offline = ["cqrs", "cqrs-sqlite", "di", "security"]
vector-search = ["cqrs-allsource", "allsource-core/vector-search"]
keyword-search = ["cqrs-allsource", "allsource-core/keyword-search"]
grpc-tls = ["router-grpc-tls"]
[dependencies]
allframe-macros = { workspace = true, optional = true }
allsource-core = { version = "0.10.3", optional = true, default-features = false }
async-graphql = { version = "7.0", optional = true }
async-graphql-parser = { version = "7.0", optional = true }
async-trait = { workspace = true }
backoff = { version = "0.4", optional = true, features = ["tokio"] }
chrono = { version = "0.4", optional = true, features = ["serde"] }
dashmap = { version = "6.0", optional = true }
futures = { version = "0.3", optional = true }
futures-core = "0.3"
governor = { version = "0.6", optional = true }
hyper = { workspace = true, optional = true }
hyper-util = { version = "0.1", features = ["tokio", "server-auto"], optional = true }
jsonwebtoken = { version = "9.3", optional = true }
moka = { version = "0.12", optional = true, features = ["future"] }
opentelemetry = { version = "0.27", optional = true }
opentelemetry-otlp = { version = "0.27", optional = true, features = ["tonic"] }
opentelemetry_sdk = { version = "0.27", optional = true, features = ["rt-tokio"] }
parking_lot = { version = "0.12", optional = true }
prometheus = { version = "0.13", optional = true }
prost = { version = "0.14", optional = true }
prost-types = { version = "0.14", optional = true }
rand = { version = "0.8", optional = true }
redis = { version = "0.27", optional = true, features = ["tokio-comp", "connection-manager"] }
reqwest = { version = "0.12", optional = true, default-features = false, features = ["json", "rustls-tls"] }
rusqlite = { workspace = true, optional = true }
rustls-pemfile = { version = "2.0", optional = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
tokio-rustls = { version = "0.26", optional = true }
tokio-stream = { version = "0.1", optional = true }
tokio-util = { version = "0.7", features = ["rt"] }
toml = { version = "0.8" }
tonic = { version = "0.14", optional = true, features = ["transport", "codegen"] }
tonic-health = { version = "0.14", optional = true }
tonic-reflection = { version = "0.14", optional = true }
tower = { version = "0.5", optional = true }
tracing = { version = "0.1", optional = true }
tracing-opentelemetry = { version = "0.28", optional = true }
tracing-subscriber = { version = "0.3", optional = true, features = ["env-filter", "json"] }
url = { version = "2.5", optional = true }
[build-dependencies]
tonic-build = { version = "0.14", optional = true }
[dev-dependencies]
mockall = { workspace = true }
proptest = { workspace = true }
tokio-stream = "0.1"