[package]
edition = "2024"
rust-version = "1.89"
name = "armature-framework"
version = "0.2.2"
authors = ["Pegasus Heavy Industries LLC"]
build = false
exclude = [
".git/",
".github/",
".gitignore",
".cursor/",
"target/",
"web/",
"CONTRIBUTING.md",
"COVERAGE_STATUS.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A modern, type-safe HTTP framework for Rust inspired by Angular and NestJS. Features dependency injection, decorators, middleware, authentication (JWT/OAuth2/SAML), validation, OpenAPI/Swagger, caching, job queues, and observability."
homepage = "https://pegasusheavy.github.io/armature"
documentation = "https://docs.rs/armature-framework"
readme = "README.md"
keywords = [
"web",
"framework",
"http",
"async",
"nestjs",
]
categories = [
"web-programming::http-server",
"asynchronous",
"network-programming",
]
license = "Apache-2.0"
repository = "https://github.com/pegasusheavy/armature"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
acme = ["armature-acme"]
auth = [
"armature-auth",
"armature-jwt",
]
cache = [
"armature-cache",
"armature-cache/memcached",
]
cache-redis-only = ["armature-cache"]
compression = ["armature-compression"]
config = ["armature-config"]
cron = ["armature-cron"]
default = []
full = [
"graphql",
"config",
"jwt",
"auth",
"testing",
"validation",
"openapi",
"cache",
"cron",
"queue",
"opentelemetry",
"security",
"acme",
"ratelimit",
"compression",
"webhooks",
"messaging",
]
full-minimal-versions = [
"graphql",
"config",
"jwt",
"auth",
"testing",
"validation",
"openapi",
"cache-redis-only",
"cron",
"queue",
"opentelemetry",
"security",
"acme",
"ratelimit",
"compression",
"webhooks",
]
full-with-saml = [
"full",
"saml",
]
graphql = ["armature-graphql"]
jwt = ["armature-jwt"]
memory-profiling = ["dhat"]
messaging = ["armature-messaging"]
messaging-full = ["armature-messaging/full"]
messaging-kafka = ["armature-messaging/kafka"]
messaging-nats = ["armature-messaging/nats"]
messaging-rabbitmq = ["armature-messaging/rabbitmq"]
openapi = ["armature-openapi"]
opentelemetry = ["armature-opentelemetry"]
queue = ["armature-queue"]
ratelimit = ["armature-ratelimit"]
saml = ["armature-auth/saml"]
security = ["armature-security"]
simd-json = ["armature-core/simd-json"]
testing = ["armature-testing"]
validation = ["armature-validation"]
webhooks = ["armature-webhooks"]
[lib]
name = "armature"
path = "src/lib.rs"
[[bin]]
name = "http-benchmark"
path = "benches/http_benchmark_runner.rs"
[[example]]
name = "acme_certificate"
path = "examples/acme_certificate.rs"
required-features = ["acme"]
[[example]]
name = "advanced_metrics"
path = "examples/advanced_metrics.rs"
[[example]]
name = "audit_advanced"
path = "examples/audit_advanced.rs"
[[example]]
name = "audit_example"
path = "examples/audit_example.rs"
[[example]]
name = "auth_api"
path = "examples/auth_api.rs"
[[example]]
name = "auth_complete"
path = "examples/auth_complete.rs"
required-features = ["auth"]
[[example]]
name = "automatic_di"
path = "examples/automatic_di.rs"
[[example]]
name = "benchmark_server"
path = "examples/benchmark_server.rs"
[[example]]
name = "cache_improvements_example"
path = "examples/cache_improvements_example.rs"
[[example]]
name = "compression_example"
path = "examples/compression_example.rs"
required-features = ["compression"]
[[example]]
name = "config_example"
path = "examples/config_example.rs"
required-features = ["config"]
[[example]]
name = "cqrs_example"
path = "examples/cqrs_example.rs"
[[example]]
name = "crud_api"
path = "examples/crud_api.rs"
[[example]]
name = "dependency_injection"
path = "examples/dependency_injection.rs"
[[example]]
name = "distributed_locks_example"
path = "examples/distributed_locks_example.rs"
[[example]]
name = "event_bus_example"
path = "examples/event_bus_example.rs"
[[example]]
name = "event_sourcing_example"
path = "examples/event_sourcing_example.rs"
[[example]]
name = "extractors_example"
path = "examples/extractors_example.rs"
[[example]]
name = "ferron_integration"
path = "examples/ferron_integration.rs"
[[example]]
name = "ferron_proxy"
path = "examples/ferron_proxy.rs"
[[example]]
name = "form_processing"
path = "examples/form_processing.rs"
[[example]]
name = "full_example"
path = "examples/full_example.rs"
[[example]]
name = "graceful_shutdown"
path = "examples/graceful_shutdown.rs"
[[example]]
name = "graphql_api"
path = "examples/graphql_api.rs"
required-features = ["graphql"]
[[example]]
name = "graphql_with_docs"
path = "examples/graphql_with_docs.rs"
required-features = ["graphql"]
[[example]]
name = "guards_interceptors"
path = "examples/guards_interceptors.rs"
[[example]]
name = "handlebars_templates"
path = "examples/handlebars_templates.rs"
[[example]]
name = "http_errors"
path = "examples/http_errors.rs"
[[example]]
name = "jwt_simple"
path = "examples/jwt_simple.rs"
required-features = ["jwt"]
[[example]]
name = "macro_utils_example"
path = "examples/macro_utils_example.rs"
[[example]]
name = "memory_profile_server"
path = "examples/memory_profile_server.rs"
[[example]]
name = "metrics_example"
path = "examples/metrics_example.rs"
[[example]]
name = "micro_benchmark_server"
path = "examples/micro_benchmark_server.rs"
[[example]]
name = "middleware_demo"
path = "examples/middleware_demo.rs"
[[example]]
name = "oauth2_providers"
path = "examples/oauth2_providers.rs"
required-features = ["auth"]
[[example]]
name = "pagination_example"
path = "examples/pagination_example.rs"
[[example]]
name = "profiling_server"
path = "examples/profiling_server.rs"
[[example]]
name = "rate_limiting"
path = "examples/rate_limiting.rs"
required-features = ["ratelimit"]
[[example]]
name = "realtime_api"
path = "examples/realtime_api.rs"
[[example]]
name = "rest_api"
path = "examples/rest_api.rs"
[[example]]
name = "rhai_app"
path = "examples/rhai_app.rs"
[[example]]
name = "route_constraints_example"
path = "examples/route_constraints_example.rs"
[[example]]
name = "route_groups_and_constraints"
path = "examples/route_groups_and_constraints.rs"
[[example]]
name = "route_groups_example"
path = "examples/route_groups_example.rs"
[[example]]
name = "saml_simple"
path = "examples/saml_simple.rs"
required-features = [
"auth",
"saml",
]
[[example]]
name = "security_advanced"
path = "examples/security_advanced.rs"
[[example]]
name = "security_example"
path = "examples/security_example.rs"
required-features = ["security"]
[[example]]
name = "server_sent_events"
path = "examples/server_sent_events.rs"
[[example]]
name = "service_discovery_example"
path = "examples/service_discovery_example.rs"
[[example]]
name = "shutdown_advanced"
path = "examples/shutdown_advanced.rs"
[[example]]
name = "simple"
path = "examples/simple.rs"
[[example]]
name = "static_assets"
path = "examples/static_assets.rs"
[[example]]
name = "techempower_server"
path = "examples/techempower_server.rs"
[[example]]
name = "testing_contract"
path = "examples/testing_contract.rs"
[[example]]
name = "testing_docker"
path = "examples/testing_docker.rs"
[[example]]
name = "testing_example"
path = "examples/testing_example.rs"
[[example]]
name = "testing_integration"
path = "examples/testing_integration.rs"
[[example]]
name = "testing_load"
path = "examples/testing_load.rs"
[[example]]
name = "validation_example"
path = "examples/validation_example.rs"
required-features = ["validation"]
[[example]]
name = "webhooks_example"
path = "examples/webhooks_example.rs"
required-features = ["webhooks"]
[[example]]
name = "websocket_chat"
path = "examples/websocket_chat.rs"
[[test]]
name = "common_workflows"
path = "tests/common_workflows.rs"
[[bench]]
name = "arena_benchmarks"
path = "benches/arena_benchmarks.rs"
harness = false
[[bench]]
name = "auth_benchmarks"
path = "benches/auth_benchmarks.rs"
harness = false
[[bench]]
name = "body_benchmarks"
path = "benches/body_benchmarks.rs"
harness = false
[[bench]]
name = "cache_benchmarks"
path = "benches/cache_benchmarks.rs"
harness = false
[[bench]]
name = "core_benchmarks"
path = "benches/core_benchmarks.rs"
harness = false
[[bench]]
name = "data_benchmarks"
path = "benches/data_benchmarks.rs"
harness = false
[[bench]]
name = "database_benchmarks"
path = "benches/database_benchmarks.rs"
harness = false
[[bench]]
name = "framework_comparison"
path = "benches/framework_comparison.rs"
harness = false
[[bench]]
name = "http_client_benchmarks"
path = "benches/http_client_benchmarks.rs"
harness = false
[[bench]]
name = "json_benchmarks"
path = "benches/json_benchmarks.rs"
harness = false
[[bench]]
name = "memory_benchmarks"
path = "benches/memory_benchmarks.rs"
harness = false
[[bench]]
name = "micro_benchmarks"
path = "benches/micro_benchmarks.rs"
harness = false
[[bench]]
name = "pipeline_benchmarks"
path = "benches/pipeline_benchmarks.rs"
harness = false
[[bench]]
name = "ratelimit_benchmarks"
path = "benches/ratelimit_benchmarks.rs"
harness = false
[[bench]]
name = "resilience_benchmarks"
path = "benches/resilience_benchmarks.rs"
harness = false
[[bench]]
name = "security_benchmarks"
path = "benches/security_benchmarks.rs"
harness = false
[[bench]]
name = "simd_parser_benchmarks"
path = "benches/simd_parser_benchmarks.rs"
harness = false
[[bench]]
name = "storage_benchmarks"
path = "benches/storage_benchmarks.rs"
harness = false
[[bench]]
name = "validation_benchmarks"
path = "benches/validation_benchmarks.rs"
harness = false
[dependencies.armature-acme]
version = "0.1.1"
optional = true
[dependencies.armature-auth]
version = "0.1.1"
optional = true
[dependencies.armature-cache]
version = "0.1.0"
optional = true
[dependencies.armature-compression]
version = "0.1.1"
optional = true
[dependencies.armature-config]
version = "0.1.1"
optional = true
[dependencies.armature-core]
version = "0.2.2"
[dependencies.armature-cron]
version = "0.1.1"
optional = true
[dependencies.armature-graphql]
version = "0.2.0"
optional = true
[dependencies.armature-jwt]
version = "0.1.1"
optional = true
[dependencies.armature-messaging]
version = "0.1.0"
optional = true
[dependencies.armature-openapi]
version = "0.1.1"
optional = true
[dependencies.armature-opentelemetry]
version = "0.1.1"
optional = true
[dependencies.armature-proc-macro]
version = "0.1.3"
[dependencies.armature-queue]
version = "0.1.1"
optional = true
[dependencies.armature-ratelimit]
version = "0.1.1"
optional = true
[dependencies.armature-security]
version = "0.1.1"
optional = true
[dependencies.armature-testing]
version = "0.1.1"
optional = true
[dependencies.armature-validation]
version = "0.1.1"
optional = true
[dependencies.armature-webhooks]
version = "0.1.1"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.dhat]
version = "0.3"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.tokio]
version = "1.35"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
[dev-dependencies.bytes]
version = "1.5"
[dev-dependencies.cargo-husky]
version = "1.5"
features = ["user-hooks"]
default-features = false
[dev-dependencies.chrono]
version = "0.4"
[dev-dependencies.criterion]
version = "0.8"
features = [
"html_reports",
"async_tokio",
]
[dev-dependencies.crossbeam]
version = "0.8"
[dev-dependencies.ctrlc]
version = "3.4"
[dev-dependencies.diesel]
version = "2.2"
features = [
"postgres",
"r2d2",
"chrono",
]
[dev-dependencies.fastrand]
version = "2.3"
[dev-dependencies.handlebars]
version = "6.3"
[dev-dependencies.jsonwebtoken]
version = "10.2"
features = ["rust_crypto"]
[dev-dependencies.rand]
version = "0.9"
[dev-dependencies.regex]
version = "1.10"
[dev-dependencies.reqwest]
version = "0.12"
features = ["json"]
[dev-dependencies.sea-orm]
version = "1.1"
features = [
"sqlx-postgres",
"runtime-tokio-rustls",
"macros",
]
[dev-dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"postgres",
"chrono",
]
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tracing]
version = "0.1"
[dev-dependencies.tracing-subscriber]
version = "0.3"
[dev-dependencies.uuid]
version = "1.11"
features = ["v4"]
[target."cfg(unix)".dev-dependencies.inferno]
version = "0.12"
[target."cfg(unix)".dev-dependencies.pprof]
version = "0.15"
features = [
"flamegraph",
"criterion",
"prost-codec",
]
[profile.bench]
opt-level = 3
lto = "thin"
codegen-units = 1
debug = 0
[profile.dev-opt]
opt-level = 2
inherits = "dev"
[profile.pgo-generate]
opt-level = 3
lto = "thin"
codegen-units = 1
inherits = "release"
[profile.pgo-use]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
inherits = "release"
[profile.profiling]
debug = 2
inherits = "release"
strip = "none"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = "symbols"
[profile.release-fat]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
inherits = "release"
[profile.release-native]
opt-level = 3
lto = "thin"
codegen-units = 1
inherits = "release"