[package]
edition = "2021"
name = "sdforge"
version = "0.3.0"
authors = ["Kirky.X"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Multi-protocol SDK framework with unified macro configuration"
documentation = "https://docs.rs/sdforge"
readme = "README.md"
keywords = [
"api",
"http",
"mcp",
"macro",
"framework",
]
categories = [
"web-programming",
"development-tools",
]
license = "MIT"
repository = "https://github.com/Kirky-X/sdforge"
[package.metadata.docs.rs]
all-features = true
[features]
cache = [
"dep:http",
"oxcache/minimal",
]
default = ["http"]
full = [
"http",
"mcp",
"streaming",
"timestamp",
"security",
"cache",
"websocket",
"grpc",
"logging",
"openapi",
]
grpc = [
"http",
"tonic",
"prost",
"tonic-prost",
]
hex = ["dep:hex"]
http = [
"axum",
"tower",
"tower-http",
"inventory",
"tokio",
"axum-extra",
"toml",
"regex",
"once_cell",
"validator",
"uuid",
]
logging = [
"chrono",
"tokio",
]
mcp = [
"rmcp",
"inventory",
"anyhow",
"dep:http",
]
openapi = [
"utoipa",
"http",
]
security = [
"http",
"uuid",
"hmac",
"sha2",
"chrono",
"tokio",
"subtle",
"once_cell",
"rand",
"regex",
"oxcache/minimal",
"bincode",
"cache",
"hex",
"base64",
]
simd-json = ["dep:simd-json"]
streaming = [
"http",
"tokio-stream",
"futures-util",
"chrono",
]
timestamp = ["chrono"]
websocket = [
"http",
"streaming",
"axum-extra",
"chrono",
]
[lib]
name = "sdforge"
path = "src/lib.rs"
[[test]]
name = "cache_tests"
path = "tests/integration/cache_tests.rs"
[[test]]
name = "config_tests"
path = "tests/unit/config_tests.rs"
[[test]]
name = "core_tests"
path = "tests/unit/core_tests.rs"
[[test]]
name = "edge_case_tests"
path = "tests/unit/edge_case_tests.rs"
[[test]]
name = "error_handling_tests"
path = "tests/integration/error_handling_tests.rs"
[[test]]
name = "feature_combinations"
path = "tests/integration/feature_combinations.rs"
[[test]]
name = "grpc_tests"
path = "tests/integration/grpc_tests.rs"
[[test]]
name = "http_integration"
path = "tests/integration/http_integration.rs"
[[test]]
name = "http_tests"
path = "tests/integration/http_tests.rs"
[[test]]
name = "http_version_routing_tests"
path = "tests/unit/http_version_routing_tests.rs"
[[test]]
name = "integration_http_mcp"
path = "tests/integration_http_mcp.rs"
[[test]]
name = "macro_tests"
path = "tests/macros/macro_tests.rs"
[[test]]
name = "mcp_integration"
path = "tests/integration/mcp_integration.rs"
[[test]]
name = "mcp_protocol_tests"
path = "tests/integration/mcp_protocol_tests.rs"
[[test]]
name = "mcp_tool_instance_tests"
path = "tests/unit/mcp_tool_instance_tests.rs"
[[test]]
name = "openapi_tests"
path = "tests/integration/openapi_tests.rs"
required-features = [
"http",
"openapi",
]
[[test]]
name = "security_headers_tests"
path = "tests/integration/security_headers_tests.rs"
[[test]]
name = "security_middleware_tests"
path = "tests/integration/security_middleware_tests.rs"
[[test]]
name = "security_tests"
path = "tests/integration/security_tests.rs"
[[test]]
name = "streaming_tests"
path = "tests/integration/streaming_tests.rs"
[[test]]
name = "uat_tests"
path = "tests/integration/uat_tests.rs"
[[test]]
name = "websocket_integration_tests"
path = "tests/integration/websocket_integration_tests.rs"
[[test]]
name = "websocket_tests"
path = "tests/integration/websocket_tests.rs"
[[bench]]
name = "axiom_bench"
path = "src/benches/sdforge_bench.rs"
harness = false
[[bench]]
name = "config_and_cache_bench"
path = "benches/config_and_cache_bench.rs"
[dependencies.anyhow]
version = "1.0"
features = ["std"]
optional = true
default-features = false
[dependencies.axum]
version = "~0.8.9"
features = [
"http1",
"json",
"form",
"matched-path",
"original-uri",
"query",
"tokio",
"tower-log",
"tracing",
"ws",
]
optional = true
default-features = false
[dependencies.axum-extra]
version = "~0.12"
features = [
"typed-header",
"typed-header",
]
optional = true
default-features = false
[dependencies.base64]
version = "~0.22"
features = [
"std",
"alloc",
]
optional = true
default-features = false
[dependencies.bincode]
version = "~2.0"
features = [
"std",
"serde",
]
optional = true
default-features = false
[dependencies.chrono]
version = "~0.4"
features = [
"std",
"serde",
"clock",
]
optional = true
default-features = false
[dependencies.futures-util]
version = "~0.3"
features = [
"std",
"async-await",
"async-await-macro",
]
optional = true
default-features = false
[dependencies.hex]
version = "~0.4"
features = ["alloc"]
optional = true
default-features = false
[dependencies.hmac]
version = "~0.13"
optional = true
default-features = false
[dependencies.http]
version = "~1.4"
optional = true
default-features = false
[dependencies.inventory]
version = "~0.3"
optional = true
default-features = false
[dependencies.log]
version = "~0.4"
features = ["std"]
default-features = false
[dependencies.once_cell]
version = "~1.21"
features = ["std"]
optional = true
default-features = false
[dependencies.oxcache]
version = "0.3.2"
features = ["minimal"]
optional = true
default-features = false
[dependencies.prost]
version = "~0.14"
features = ["derive"]
optional = true
default-features = false
[dependencies.rand]
version = "~0.10"
features = [
"std",
"std_rng",
]
optional = true
default-features = false
[dependencies.regex]
version = "~1.12"
features = [
"std",
"perf",
]
optional = true
default-features = false
[dependencies.rmcp]
version = "~2.1"
features = ["server"]
optional = true
default-features = false
[dependencies.sdforge-macros]
version = "0.3.0"
[dependencies.serde]
version = "~1.0"
features = [
"std",
"derive",
]
default-features = false
[dependencies.serde_json]
version = "~1.0"
features = ["std"]
default-features = false
[dependencies.sha2]
version = "~0.11"
optional = true
default-features = false
[dependencies.simd-json]
version = "~0.17"
features = ["serde_impl"]
optional = true
default-features = false
[dependencies.subtle]
version = "~2.6"
optional = true
default-features = false
[dependencies.thiserror]
version = "~2.0"
default-features = false
[dependencies.tokio]
version = "~1.52"
features = [
"rt-multi-thread",
"macros",
"sync",
"time",
"net",
]
optional = true
default-features = false
[dependencies.tokio-stream]
version = "~0.1"
optional = true
default-features = false
[dependencies.toml]
version = "~1.1"
features = [
"parse",
"display",
]
optional = true
default-features = false
[dependencies.tonic]
version = "~0.14"
features = [
"transport",
"codegen",
"router",
]
optional = true
default-features = false
[dependencies.tonic-prost]
version = "~0.14"
optional = true
default-features = false
[dependencies.tower]
version = "~0.5"
features = [
"log",
"util",
"timeout",
"limit",
"load-shed",
"retry",
]
optional = true
default-features = false
[dependencies.tower-http]
version = "~0.7"
features = [
"cors",
"limit",
"timeout",
"set-header",
"compression-gzip",
"compression-deflate",
]
optional = true
default-features = false
[dependencies.utoipa]
version = "~5.5"
features = ["macros"]
optional = true
default-features = false
[dependencies.uuid]
version = "~1.23"
features = [
"std",
"v4",
]
optional = true
default-features = false
[dependencies.validator]
version = "~0.20"
features = ["derive"]
optional = true
default-features = false
[dev-dependencies.axum-test]
version = "~21"
features = ["ws"]
default-features = false
[dev-dependencies.criterion]
version = "~0.8"
default-features = false
[dev-dependencies.once_cell]
version = "~1.21"
features = ["std"]
default-features = false
[dev-dependencies.proptest]
version = "~1.11"
features = [
"std",
"alloc",
"bit-set",
]
default-features = false
[dev-dependencies.reqwest]
version = "~0.13"
features = ["json"]
default-features = false
[dev-dependencies.sdforge-macros]
version = "0.3.0"
[dev-dependencies.serial_test]
version = "~3.5"
default-features = false
[dev-dependencies.tempfile]
version = "~3.27"
default-features = false
[dev-dependencies.tokio]
version = "~1.52"
features = [
"rt-multi-thread",
"macros",
"sync",
"time",
"net",
]
default-features = false
[dev-dependencies.tokio-stream]
version = "~0.1"
default-features = false
[dev-dependencies.trybuild]
version = "~1.0"
default-features = false
[dev-dependencies.url]
version = "~2.5"
default-features = false
[build-dependencies.tonic-build]
version = "0.14"
[build-dependencies.tonic-prost-build]
version = "0.14"
[profile.dev]
debug = 2
[profile.dev.package."*"]
opt-level = 2
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1