[package]
edition = "2021"
rust-version = "1.92"
name = "fraiseql-server"
version = "2.1.4"
authors = ["FraiseQL Team <team@fraiseql.dev>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "HTTP server for FraiseQL v2 GraphQL engine"
homepage = "https://fraiseql.dev"
documentation = "https://docs.fraiseql.dev"
readme = "README.md"
keywords = [
"graphql",
"sql",
"database",
"server",
"api",
]
categories = [
"database",
"web-programming::http-server",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/fraiseql/fraiseql"
[features]
arrow = [
"dep:fraiseql-arrow",
"dep:tonic",
]
auth = ["dep:fraiseql-auth"]
aws-s3 = [
"aws-sdk-s3",
"aws-config",
]
azure-blob = []
cors = []
database = []
default = [
"auth",
"tracing-opentelemetry",
]
federation = ["fraiseql-core/federation"]
gcs = []
grpc = [
"dep:tonic",
"dep:prost",
"dep:prost-reflect",
"dep:http-body",
"dep:http-body-util",
]
http-body = ["dep:http-body"]
http-body-util = ["dep:http-body-util"]
mcp = [
"rmcp",
"schemars",
]
metrics = [
"dep:metrics",
"metrics-exporter-prometheus",
]
observers = ["fraiseql-observers"]
observers-enterprise = [
"observers",
"fraiseql-observers/enterprise",
"fraiseql-observers/nats",
]
observers-nats = [
"observers",
"fraiseql-observers/nats",
]
prost = ["dep:prost"]
prost-reflect = ["dep:prost-reflect"]
redis-apq = ["fraiseql-core/redis-apq"]
redis-idempotency = [
"redis",
"rmp-serde",
]
redis-pkce = [
"auth",
"fraiseql-auth/redis-pkce",
]
redis-rate-limiting = ["redis"]
rest = []
secrets = ["dep:fraiseql-secrets"]
testing = []
tracing-opentelemetry = [
"opentelemetry",
"opentelemetry_sdk",
"opentelemetry-otlp",
"dep:tracing-opentelemetry",
]
webhooks = ["dep:fraiseql-webhooks"]
wire-backend = ["fraiseql-core/wire-backend"]
[lib]
name = "fraiseql_server"
path = "src/lib.rs"
[[bin]]
name = "fraiseql-server"
path = "src/main.rs"
[[test]]
name = "admin_api_security_test"
path = "tests/admin_api_security_test.rs"
[[test]]
name = "api_admin_tests"
path = "tests/api_admin_tests.rs"
[[test]]
name = "api_design_audit_tests"
path = "tests/api_design_audit_tests.rs"
[[test]]
name = "api_design_security_tests"
path = "tests/api_design_security_tests.rs"
[[test]]
name = "api_federation_tests"
path = "tests/api_federation_tests.rs"
required-features = ["federation"]
[[test]]
name = "api_infrastructure_tests"
path = "tests/api_infrastructure_tests.rs"
[[test]]
name = "api_openapi_tests"
path = "tests/api_openapi_tests.rs"
[[test]]
name = "api_query_tests"
path = "tests/api_query_tests.rs"
[[test]]
name = "api_schema_tests"
path = "tests/api_schema_tests.rs"
[[test]]
name = "apq_mutation_e2e_test"
path = "tests/apq_mutation_e2e_test.rs"
[[test]]
name = "auth_regression_test"
path = "tests/auth_regression_test.rs"
[[test]]
name = "backpressure_overload_test"
path = "tests/backpressure_overload_test.rs"
[[test]]
name = "backpressure_test"
path = "tests/backpressure_test.rs"
[[test]]
name = "cache_wiring_tests"
path = "tests/cache_wiring_tests.rs"
[[test]]
name = "concurrent_load_test"
path = "tests/concurrent_load_test.rs"
[[test]]
name = "config_struct_test"
path = "tests/config_struct_test.rs"
[[test]]
name = "connection_pooling_validation_test"
path = "tests/connection_pooling_validation_test.rs"
[[test]]
name = "database_query_test"
path = "tests/database_query_test.rs"
[[test]]
name = "documentation_examples_test"
path = "tests/documentation_examples_test.rs"
[[test]]
name = "endpoint_health_tests"
path = "tests/endpoint_health_tests.rs"
[[test]]
name = "error_handling_validation_test"
path = "tests/error_handling_validation_test.rs"
[[test]]
name = "example_validation_test"
path = "tests/example_validation_test.rs"
[[test]]
name = "federation_integration_test"
path = "tests/federation_integration_test.rs"
required-features = ["federation"]
[[test]]
name = "federation_saga_validation_test"
path = "tests/federation_saga_validation_test.rs"
required-features = ["federation"]
[[test]]
name = "graphql_http_layer_test"
path = "tests/graphql_http_layer_test.rs"
[[test]]
name = "graphql_request_validation_test"
path = "tests/graphql_request_validation_test.rs"
[[test]]
name = "grpc_transport_e2e_test"
path = "tests/grpc_transport_e2e_test.rs"
[[test]]
name = "http_server_e2e_test"
path = "tests/http_server_e2e_test.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "integration_performance_validation_test"
path = "tests/integration_performance_validation_test.rs"
[[test]]
name = "introspection_security_test"
path = "tests/introspection_security_test.rs"
[[test]]
name = "mcp_e2e_test"
path = "tests/mcp_e2e_test.rs"
[[test]]
name = "mcp_integration_test"
path = "tests/mcp_integration_test.rs"
[[test]]
name = "metrics_integration_test"
path = "tests/metrics_integration_test.rs"
[[test]]
name = "metrics_monitoring_validation_test"
path = "tests/metrics_monitoring_validation_test.rs"
[[test]]
name = "observability_test"
path = "tests/observability_test.rs"
[[test]]
name = "observer_e2e_test"
path = "tests/observer_e2e_test.rs"
[[test]]
name = "observer_repository_test"
path = "tests/observer_repository_test.rs"
[[test]]
name = "observer_runtime_integration_test"
path = "tests/observer_runtime_integration_test.rs"
[[test]]
name = "observer_test_helpers"
path = "tests/observer_test_helpers.rs"
[[test]]
name = "operational_tools_test"
path = "tests/operational_tools_test.rs"
[[test]]
name = "production_safety_test"
path = "tests/production_safety_test.rs"
[[test]]
name = "profile_error_redaction_test"
path = "tests/profile_error_redaction_test.rs"
[[test]]
name = "profile_query_limits_test"
path = "tests/profile_query_limits_test.rs"
[[test]]
name = "property"
path = "tests/property.rs"
[[test]]
name = "rate_limiting_integration_test"
path = "tests/rate_limiting_integration_test.rs"
[[test]]
name = "redis_apq_integration_test"
path = "tests/redis_apq_integration_test.rs"
[[test]]
name = "rest_transport_e2e_test"
path = "tests/rest_transport_e2e_test.rs"
[[test]]
name = "secrets_manager_integration_test"
path = "tests/secrets_manager_integration_test.rs"
required-features = ["secrets"]
[[test]]
name = "security"
path = "tests/security.rs"
[[test]]
name = "security_audit_test"
path = "tests/security_audit_test.rs"
[[test]]
name = "security_config_runtime_test"
path = "tests/security_config_runtime_test.rs"
[[test]]
name = "security_stack_integration_test"
path = "tests/security_stack_integration_test.rs"
[[test]]
name = "subscription_integration_test"
path = "tests/subscription_integration_test.rs"
[[test]]
name = "subscription_protocol_test"
path = "tests/subscription_protocol_test.rs"
[[test]]
name = "subscription_ws_e2e_test"
path = "tests/subscription_ws_e2e_test.rs"
[[test]]
name = "test_helpers"
path = "tests/test_helpers.rs"
[[test]]
name = "tracing_integration_test"
path = "tests/tracing_integration_test.rs"
[[test]]
name = "wire_backend_feature_test"
path = "tests/wire_backend_feature_test.rs"
[[bench]]
name = "performance_benchmarks"
path = "benches/performance_benchmarks.rs"
harness = false
[dependencies.aes-gcm]
version = "0.10"
[dependencies.anyhow]
version = "1.0"
[dependencies.arc-swap]
version = "1"
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-config]
version = "1"
optional = true
[dependencies.aws-sdk-s3]
version = "1"
optional = true
[dependencies.axum]
version = "0.8"
features = [
"macros",
"ws",
]
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.chacha20poly1305]
version = "0.10"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.dashmap]
version = "6.1"
[dependencies.dirs]
version = "5"
[dependencies.ed25519-dalek]
version = "2"
features = ["std"]
[dependencies.fraiseql-arrow]
version = "2.1.3"
optional = true
[dependencies.fraiseql-auth]
version = "2.1.3"
optional = true
[dependencies.fraiseql-core]
version = "2.1.3"
features = [
"postgres",
"schema-lint",
]
default-features = false
[dependencies.fraiseql-error]
version = "2.1.3"
features = ["axum-compat"]
default-features = false
[dependencies.fraiseql-observers]
version = "2.1.3"
optional = true
[dependencies.fraiseql-secrets]
version = "2.1.3"
optional = true
[dependencies.fraiseql-webhooks]
version = "2.1.3"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.graphql-parser]
version = "0.4"
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.http]
version = "1"
[dependencies.http-body]
version = "1.0.1"
optional = true
[dependencies.http-body-util]
version = "0.1.3"
optional = true
[dependencies.ipnet]
version = "2"
features = ["serde"]
[dependencies.jsonwebtoken]
version = "10"
features = ["rust_crypto"]
[dependencies.metrics]
version = "0.22"
optional = true
[dependencies.metrics-exporter-prometheus]
version = "0.18"
optional = true
[dependencies.opentelemetry]
version = "0.31"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.31"
features = ["http-proto"]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.31"
features = ["rt-tokio"]
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.pin-project]
version = "1"
[dependencies.prost]
version = "0.14.3"
optional = true
[dependencies.prost-reflect]
version = "0.16.3"
features = ["serde"]
optional = true
[dependencies.rand]
version = "0.8"
[dependencies.redis]
version = "1"
features = [
"aio",
"tokio-comp",
"connection-manager",
]
optional = true
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dependencies.rmcp]
version = "0.16"
features = [
"server",
"macros",
"transport-async-rw",
"transport-streamable-http-server",
]
optional = true
default-features = false
[dependencies.rmp-serde]
version = "1"
optional = true
[dependencies.rustls]
version = "0.23"
[dependencies.rustls-pemfile]
version = "2.2"
[dependencies.schemars]
version = "1"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha1]
version = "0.10"
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.8"
features = [
"postgres",
"runtime-tokio",
"uuid",
"chrono",
]
[dependencies.subtle]
version = "2.5"
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.0"
features = [
"rt-multi-thread",
"macros",
"net",
"time",
"io-util",
"io-std",
"sync",
"signal",
"fs",
]
[dependencies.tokio-rustls]
version = "0.26"
[dependencies.toml]
version = "0.8"
[dependencies.tonic]
version = "0.14"
optional = true
[dependencies.tower]
version = "0.5"
features = ["full"]
[dependencies.tower-http]
version = "0.6"
features = [
"trace",
"cors",
"compression-full",
"limit",
"timeout",
"request-id",
]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.32"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]
[dependencies.urlencoding]
version = "2.1"
[dependencies.uuid]
version = "1.0"
features = [
"v4",
"serde",
]
[dependencies.xxhash-rust]
version = "0.8.15"
features = ["xxh3"]
[dependencies.zeroize]
version = "1.8"
[dev-dependencies.criterion]
version = "0.5"
features = ["async_tokio"]
[dev-dependencies.fraiseql-auth]
version = "2.1.3"
[dev-dependencies.futures]
version = "0.3"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dev-dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio",
"postgres",
]
[dev-dependencies.temp-env]
version = "0.3"
features = ["async_closure"]
[dev-dependencies.tempfile]
version = "3.13"
[dev-dependencies.testcontainers]
version = "0.26"
features = ["watchdog"]
[dev-dependencies.testcontainers-modules]
version = "0.14"
features = ["postgres"]
[dev-dependencies.tokio-postgres]
version = "0.7"
features = [
"with-serde_json-1",
"with-uuid-1",
"with-chrono-0_4",
]
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tokio-tungstenite]
version = "0.28"
[dev-dependencies.tokio-util]
version = "0.7"
[dev-dependencies.tonic-reflection]
version = "0.14"
[dev-dependencies.wiremock]
version = "0.6"
[lints.clippy]
cargo_common_metadata = "allow"
if_not_else = "allow"
missing_errors_doc = "warn"
missing_panics_doc = "warn"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
must_use_candidate = "allow"
option_if_let_else = "allow"
or_fun_call = "allow"
redundant_closure_for_method_calls = "allow"
return_self_not_must_use = "allow"
significant_drop_tightening = "allow"
similar_names = "allow"
struct_excessive_bools = "allow"
too_many_lines = "allow"
uninlined_format_args = "allow"
unnecessary_wraps = "allow"
unused_async = "allow"
unused_enumerate_index = "allow"
unused_self = "allow"
unwrap_used = "deny"
use_self = "allow"
[lints.clippy.all]
level = "deny"
priority = -1
[lints.clippy.cargo]
level = "warn"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.rust]
dead_code = "deny"
missing_docs = "deny"
unsafe_code = "forbid"
unused_imports = "warn"
unused_variables = "warn"