[package]
edition = "2021"
name = "limiteron"
version = "0.2.2"
authors = ["Kirky.X"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Unified flow control framework for Rust"
readme = "README.md"
keywords = [
"rate-limiting",
"quota",
"throttling",
"circuit-breaker",
]
categories = [
"web-programming",
"concurrency",
]
license = "Apache-2.0"
repository = "https://github.com/Kirky-X/limiteron"
[package.metadata.tarpaulin]
timeout = "300"
out = [
"Html",
"Json",
]
output-dir = "coverage"
exclude-files = [
"**/tests/**",
"**/examples/**",
"**/benches/**",
"**/src/bin/**",
"**/macros/**",
"**/storage/redis.rs",
"**/adapters/dbnexus_storage.rs",
"**/adapters/dbnexus_ban_storage.rs",
"**/adapters/dbnexus_quota_storage.rs",
"**/adapters/storage_factory.rs",
"**/matchers/geo.rs",
]
fail-under = 95
[features]
admin-api = [
"dep:axum",
"dep:tower-http",
"dep:tower",
"dep:http",
]
audit-log = [
"telemetry",
"dep:hmac",
"dep:sha2",
"dep:hex",
]
ban-manager = []
cache-service = []
cache-storage = [
"cache-service",
"oxcache/redis",
]
chaos-testing = []
circuit-breaker = []
config-security = []
config-watcher = ["dep:notify"]
custom-limiter = []
default = []
device-matching = [
"dep:woothee",
"dep:regex",
]
event-system = ["dep:tokio-stream"]
fallback = []
full = [
"postgres",
"cache-storage",
"ban-manager",
"quota-control",
"circuit-breaker",
"fallback",
"custom-limiter",
"gcra",
"log-redaction",
"config-security",
"parallel-checker",
"geo-matching",
"device-matching",
"telemetry",
"monitoring",
"audit-log",
"macros",
"config-watcher",
"webhook",
"cache-service",
"tower-middleware",
"event-system",
"lua-script",
"multi-tenant",
"admin-api",
]
gcra = []
geo-matching = ["dep:maxminddb"]
kit = ["dep:trait-kit"]
legacy_tests = []
log-redaction = ["dep:regex"]
lua-script = ["oxcache/lua-script"]
macros = [
"dep:limiteron-macros",
"dep:proc-macro2",
"dep:syn",
"dep:quote",
]
metrics = ["dbnexus/metrics"]
minimal = ["postgres"]
monitoring = [
"dep:prometheus",
"dep:scopeguard",
]
multi-tenant = []
parallel-checker = [
"ban-manager",
"dep:futures",
]
postgres = [
"dep:dbnexus",
"dep:sqlx",
"dep:sea-orm",
]
quota-control = []
standard = [
"postgres",
"ban-manager",
"quota-control",
"circuit-breaker",
]
telemetry = [
"dep:tracing-subscriber",
"dep:opentelemetry",
"dep:opentelemetry-jaeger",
"dep:opentelemetry_sdk",
"dep:tracing-opentelemetry",
"dep:scopeguard",
]
tower-middleware = [
"dep:tower",
"dep:tower-layer",
"dep:http",
]
validation = []
webhook = ["dep:reqwest"]
[lib]
name = "limiteron"
path = "src/lib.rs"
[[test]]
name = "admin_security_tests"
path = "tests/admin_security_tests.rs"
[[test]]
name = "chaos_tests"
path = "tests/chaos_tests.rs"
[[test]]
name = "common_tests"
path = "tests/common_tests.rs"
[[test]]
name = "e2e_tests"
path = "tests/e2e_tests.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "property_tests_runner"
path = "tests/property_tests_runner.rs"
[[test]]
name = "security_tests"
path = "tests/security_tests.rs"
[[test]]
name = "unified_tests"
path = "tests/unified_tests.rs"
[[bench]]
name = "latency"
path = "benches/latency.rs"
required-features = ["full"]
[[bench]]
name = "memory"
path = "benches/memory.rs"
required-features = ["full"]
[[bench]]
name = "regression"
path = "benches/regression.rs"
required-features = ["full"]
[[bench]]
name = "throughput"
path = "benches/throughput.rs"
required-features = ["full"]
[dependencies.ahash]
version = "0.8"
features = ["serde"]
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
features = ["json"]
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.dashmap]
version = "6.2"
[dependencies.dbnexus]
version = "0.2"
features = [
"postgres",
"macros",
"sql-parser",
"permission",
]
optional = true
default-features = false
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.hex]
version = "0.4"
optional = true
[dependencies.hmac]
version = "0.13"
optional = true
[dependencies.http]
version = "1.4"
optional = true
[dependencies.ipnet]
version = "2.12"
[dependencies.limiteron-macros]
version = "0.2.2"
optional = true
[dependencies.log]
version = "0.4"
[dependencies.maxminddb]
version = "0.29"
optional = true
[dependencies.notify]
version = "8.2"
optional = true
[dependencies.opentelemetry]
version = "0.32"
optional = true
[dependencies.opentelemetry-jaeger]
version = "0.22"
features = ["rt-tokio"]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.32"
features = ["rt-tokio"]
optional = true
[dependencies.oxcache]
version = "0.3"
features = ["core"]
default-features = false
[dependencies.parking_lot]
version = "0.12"
[dependencies.proc-macro2]
version = "1.0"
optional = true
[dependencies.prometheus]
version = "0.14"
optional = true
[dependencies.quote]
version = "1.0"
optional = true
[dependencies.regex]
version = "1.12"
optional = true
[dependencies.reqwest]
version = "0.13"
features = ["json"]
optional = true
[dependencies.scopeguard]
version = "1.2"
optional = true
[dependencies.sea-orm]
version = "2.0.0-rc.42"
features = [
"macros",
"with-chrono",
]
optional = true
default-features = false
[dependencies.secrecy]
version = "0.10"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sha2]
version = "0.11"
optional = true
[dependencies.sqlx]
version = "0.9"
features = [
"postgres",
"runtime-tokio",
"tls-rustls",
]
optional = true
[dependencies.syn]
version = "2.0"
features = [
"full",
"extra-traits",
]
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.52"
features = [
"rt-multi-thread",
"macros",
"time",
"net",
"signal",
"sync",
"io-util",
]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
optional = true
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
[dependencies.toml]
version = "1.1"
[dependencies.tower]
version = "0.5"
optional = true
[dependencies.tower-http]
version = "0.7"
features = [
"cors",
"auth",
]
optional = true
[dependencies.tower-layer]
version = "0.3"
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.33"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
optional = true
[dependencies.trait-kit]
version = "0.2.3"
features = ["async"]
optional = true
default-features = false
[dependencies.uuid]
version = "1.23"
features = [
"v4",
"serde",
]
[dependencies.validator]
version = "0.20"
[dependencies.woothee]
version = "0.13"
optional = true
[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]
[dev-dependencies.futures]
version = "0.3"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.proptest]
version = "1.11"
[dev-dependencies.rand]
version = "0.10"
features = ["std_rng"]
default-features = false
[dev-dependencies.tempfile]
version = "3.27"
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tower]
version = "0.5"
features = ["util"]