[package]
edition = "2024"
rust-version = "1.95.0"
name = "apollo-router"
version = "2.14.2"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
build = "build/main.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "router"
description = "A configurable, high-performance routing runtime for Apollo Federation 🚀"
documentation = "https://docs.rs/apollo-router"
readme = "README.md"
license = "Elastic-2.0"
repository = "https://github.com/apollographql/router/"
resolver = "2"
[package.metadata.cargo-machete]
ignored = ["socket2"]
[features]
ci = []
default = ["global-allocator"]
dhat-ad-hoc = ["dhat"]
dhat-heap = ["dhat"]
failfast = []
global-allocator = [
"tikv-jemallocator/profiling",
"tikv-jemalloc-ctl/stats",
"tikv-jemalloc-ctl/profiling",
]
snapshot = []
telemetry_next = []
[lib]
name = "apollo_router"
path = "src/lib.rs"
doctest = false
[[bin]]
name = "router"
path = "src/main.rs"
test = false
[[bin]]
name = "snapshot"
path = "src/test_harness/http_snapshot_main.rs"
test = false
required-features = ["snapshot"]
[[example]]
name = "planner"
path = "examples/planner.rs"
[[test]]
name = "apollo_otel_http_proxy"
path = "tests/apollo_otel_http_proxy.rs"
[[test]]
name = "apollo_otel_traces"
path = "tests/apollo_otel_traces.rs"
[[test]]
name = "apollo_reports"
path = "tests/apollo_reports.rs"
[[test]]
name = "common"
path = "tests/common.rs"
[[test]]
name = "compute_backpressure"
path = "tests/compute_backpressure.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "redis_monitor"
path = "tests/redis_monitor.rs"
[[test]]
name = "samples"
path = "tests/samples_tests.rs"
harness = false
[[test]]
name = "set_context"
path = "tests/set_context.rs"
[[test]]
name = "telemetry_resources"
path = "tests/telemetry_resource_tests.rs"
harness = false
[[test]]
name = "type_conditions"
path = "tests/type_conditions.rs"
[[bench]]
name = "deeply_nested"
path = "benches/deeply_nested.rs"
harness = false
[[bench]]
name = "huge_requests"
path = "benches/huge_requests.rs"
harness = false
[dependencies.addr2line]
version = "0.26.0"
[dependencies.ahash]
version = "0.8.11"
[dependencies.anyhow]
version = "1.0.86"
[dependencies.apollo-compiler]
version = "1.31.0"
[dependencies.apollo-environment-detector]
version = "0.1.0"
[dependencies.apollo-federation]
version = "=2.14.2"
[dependencies.async-compression]
version = "0.4.6"
features = [
"tokio",
"futures-io",
"brotli",
"gzip",
"deflate",
]
[dependencies.async-trait]
version = "0.1.77"
[dependencies.aws-config]
version = "1.5.5"
default-features = false
[dependencies.aws-credential-types]
version = "1.2.1"
[dependencies.aws-sigv4]
version = "1.2.6"
[dependencies.aws-smithy-async]
version = "1.2.5"
features = ["rt-tokio"]
[dependencies.aws-smithy-http-client]
version = "1.0.1"
features = [
"default-client",
"rustls-ring",
]
default-features = false
[dependencies.aws-smithy-runtime-api]
version = "1.7.3"
features = ["client"]
[dependencies.aws-types]
version = "1.3.3"
[dependencies.axum]
version = "0.8.1"
features = ["http2"]
[dependencies.base64]
version = "0.22.0"
[dependencies.blake3]
version = "1.8.2"
features = ["serde"]
[dependencies.bloomfilter]
version = "3.0.0"
[dependencies.brotli]
version = "8.0.0"
[dependencies.buildstructor]
version = "0.6.0"
[dependencies.bytes]
version = "1.6.0"
[dependencies.bytesize]
version = "1.3.0"
features = ["serde"]
[dependencies.ci_info]
version = "0.14.14"
features = ["serde-1"]
[dependencies.clap]
version = "4.5.8"
features = [
"env",
"derive",
"std",
"help",
]
default-features = false
[dependencies.console]
version = "0.16.0"
[dependencies.cookie]
version = "0.18.0"
default-features = false
[dependencies.crossbeam-channel]
version = "0.5.15"
[dependencies.dashmap]
version = "6.0.0"
features = ["serde"]
[dependencies.derivative]
version = "2.2.0"
[dependencies.derive_more]
version = "2.0.0"
features = [
"from",
"display",
]
default-features = false
[dependencies.dhat]
version = "0.3.3"
optional = true
[dependencies.diff]
version = "0.1.13"
[dependencies.displaydoc]
version = "0.2"
[dependencies.docker_credential]
version = "1.3.1"
[dependencies.flate2]
version = "1.0.30"
[dependencies.fred]
version = "10.1.0"
features = [
"enable-rustls-ring",
"i-cluster",
"tcp-user-timeouts",
"metrics",
"serde-json",
"replicas",
]
[dependencies.futures]
version = "0.3.30"
features = ["thread-pool"]
[dependencies.graphql_client]
version = "0.16.0"
[dependencies.h2]
version = "0.4.13"
[dependencies.heck]
version = "0.5.0"
[dependencies.hex]
version = "0.4.3"
features = ["serde"]
[dependencies.hickory-resolver]
version = "0.26.0"
[dependencies.hmac]
version = "0.12.1"
[dependencies.http]
version = "1.1.0"
[dependencies.http-body]
version = "1.0.1"
[dependencies.http-body-util]
version = "0.1.2"
[dependencies.http-serde]
version = "2.1.1"
[dependencies.humantime]
version = "2.1.0"
[dependencies.humantime-serde]
version = "1.1.1"
[dependencies.hyper]
version = "1.5.1"
features = ["full"]
[dependencies.hyper-rustls]
version = "0.27.3"
features = [
"http1",
"http2",
"rustls-native-certs",
]
default-features = false
[dependencies.hyper-util]
version = "0.1.16"
features = [
"client",
"client-legacy",
"server",
"server-graceful",
"http1",
"http2",
"tokio",
]
[dependencies.indexmap]
version = "2.2.6"
features = ["serde"]
[dependencies.itertools]
version = "0.14.0"
[dependencies.itoa]
version = "1.0.9"
[dependencies.jsonpath-rust]
version = "0.3.5"
[dependencies.jsonpath_lib]
version = "0.3.0"
[dependencies.jsonschema]
version = "0.46.0"
default-features = false
[dependencies.jsonwebtoken]
version = "10.0.0"
features = ["rust_crypto"]
[dependencies.libc]
version = "0.2.155"
[dependencies.linkme]
version = "0.3.30"
[dependencies.log]
version = "0.4.22"
[dependencies.lru]
version = "0.17.0"
[dependencies.mediatype]
version = "0.21.0"
[dependencies.memchr]
version = "2.7.4"
[dependencies.mime]
version = "0.3.17"
[dependencies.mockall]
version = "0.14.0"
[dependencies.multer]
version = "3.1.0"
[dependencies.multimap]
version = "0.9.1"
[dependencies.notify]
version = "8.0.0"
features = ["macos_kqueue"]
default-features = false
[dependencies.nu-ansi-term]
version = "0.50"
[dependencies.num-traits]
version = "0.2.19"
[dependencies.oci-client]
version = "0.15.0"
features = [
"rustls-tls",
"rustls-tls-native-roots",
"trust-dns",
]
default-features = false
[dependencies.once_cell]
version = "1.19.0"
[dependencies.opentelemetry]
version = "0.31"
features = [
"trace",
"metrics",
]
[dependencies.opentelemetry-aws]
version = "0.19"
[dependencies.opentelemetry-http]
version = "0.31"
[dependencies.opentelemetry-jaeger-propagator]
version = "0.31"
[dependencies.opentelemetry-otlp]
version = "0.31"
features = [
"grpc-tonic",
"gzip-tonic",
"gzip-http",
"tonic",
"tls",
"http-proto",
"metrics",
"reqwest-client",
"trace",
]
default-features = false
[dependencies.opentelemetry-prometheus]
version = "0.31"
[dependencies.opentelemetry-semantic-conventions]
version = "0.31"
features = ["semconv_experimental"]
[dependencies.opentelemetry-zipkin]
version = "0.31"
features = [
"reqwest-client",
"reqwest-rustls",
]
default-features = false
[dependencies.opentelemetry_sdk]
version = "0.31"
features = [
"rt-tokio",
"trace",
"metrics",
"spec_unstable_metrics_views",
"experimental_trace_batch_span_processor_with_async_runtime",
"experimental_metrics_periodicreader_with_async_runtime",
]
default-features = false
[dependencies.parking_lot]
version = "0.12.3"
features = ["serde"]
[dependencies.paste]
version = "1.0.15"
[dependencies.pin-project-lite]
version = "0.2.14"
[dependencies.prometheus]
version = "0.14"
[dependencies.prost]
version = "0.14.0"
[dependencies.prost-types]
version = "0.14.0"
[dependencies.proteus]
version = "0.5.0"
[dependencies.rand]
version = "0.10.0"
[dependencies.regex]
version = "1.10.5"
[dependencies.reqwest]
version = "0.12.0"
features = [
"rustls-tls",
"rustls-tls-native-roots",
"gzip",
"json",
"stream",
]
default-features = false
[dependencies.rhai]
version = "1.23.6"
features = [
"sync",
"serde",
"internals",
]
[dependencies.rmp]
version = "0.8"
[dependencies.rust-embed]
version = "8.4.0"
features = ["include-exclude"]
[dependencies.rustls]
version = "0.23.19"
default-features = false
[dependencies.rustls-native-certs]
version = "0.8.1"
[dependencies.rustls-pemfile]
version = "2.2.0"
[dependencies.ryu]
version = "1.0.15"
[dependencies.schemars]
version = "1.0.0"
features = ["url2"]
[dependencies.scopeguard]
version = "1.2.0"
[dependencies.semver]
version = "1.0.23"
[dependencies.serde]
version = "1.0.198"
features = [
"derive",
"rc",
]
[dependencies.serde_derive_default]
version = "0.1"
[dependencies.serde_json]
version = "1.0.114"
features = [
"preserve_order",
"float_roundtrip",
]
[dependencies.serde_json_bytes]
version = "0.2.5"
features = ["preserve_order"]
[dependencies.serde_regex]
version = "1.1.0"
[dependencies.serde_urlencoded]
version = "0.7.1"
[dependencies.serde_yaml]
version = "0.8.26"
[dependencies.sha1]
version = "0.10.6"
[dependencies.sha2]
version = "0.10.8"
[dependencies.shellexpand]
version = "3.1.0"
[dependencies.similar]
version = "3.0.0"
features = ["inline"]
[dependencies.socket2]
version = "0.5"
features = ["all"]
[dependencies.static_assertions]
version = "1.1.0"
[dependencies.strum]
version = "0.28.0"
features = ["derive"]
[dependencies.sys-info]
version = "0.9.1"
[dependencies.sysinfo]
version = "0.38.0"
features = [
"system",
"windows",
]
default-features = false
[dependencies.thiserror]
version = "2.0.0"
[dependencies.time]
version = "0.3.36"
features = ["serde"]
[dependencies.tokio]
version = "1.36.0"
features = ["full"]
[dependencies.tokio-rustls]
version = "0.26.0"
default-features = false
[dependencies.tokio-stream]
version = "0.1.15"
features = [
"sync",
"net",
"fs",
]
[dependencies.tokio-tar]
version = "0.6.2"
package = "astral-tokio-tar"
[dependencies.tokio-tungstenite]
version = "0.29.0"
features = ["rustls-tls-native-roots"]
[dependencies.tokio-util]
version = "0.7.11"
features = [
"net",
"codec",
"time",
"compat",
]
[dependencies.tonic]
version = "0.14.5"
features = [
"transport",
"tls-ring",
"tls-native-roots",
"gzip",
]
[dependencies.tower]
version = "0.5.1"
features = ["full"]
[dependencies.tower-http]
version = "0.6.2"
features = ["full"]
[dependencies.tower-service]
version = "0.3.2"
[dependencies.tracing]
version = "0.1.40"
[dependencies.tracing-core]
version = "0.1.32"
[dependencies.tracing-futures]
version = "0.2.5"
features = ["futures-03"]
[dependencies.tracing-serde]
version = "0.2.0"
[dependencies.tracing-subscriber]
version = "0.3.20"
features = [
"env-filter",
"json",
]
[dependencies.url]
version = "2.5.4"
features = ["serde"]
[dependencies.urlencoding]
version = "2.1.3"
[dependencies.uuid]
version = "1.9.1"
features = [
"serde",
"v4",
]
[dependencies.wiremock]
version = "0.6"
[dependencies.wsl]
version = "0.1.0"
[dependencies.yaml-rust]
version = "0.4.5"
[dependencies.zstd]
version = "0.13.1"
[dependencies.zstd-safe]
version = "7.1.0"
[dev-dependencies.axum]
version = "0.8.1"
features = [
"http2",
"ws",
]
[dev-dependencies.ctor]
version = "0.10.0"
[dev-dependencies.ecdsa]
version = "0.16.9"
features = [
"signing",
"pem",
"pkcs8",
]
[dev-dependencies.encoding_rs]
version = "0.8"
[dev-dependencies.fred]
version = "10.1.0"
features = [
"enable-rustls-ring",
"mocks",
"i-cluster",
"tcp-user-timeouts",
"replicas",
]
[dev-dependencies.futures-test]
version = "0.3.30"
[dev-dependencies.insta]
version = "1.38.0"
features = [
"json",
"redactions",
"yaml",
"glob",
]
[dev-dependencies.libtest-mimic]
version = "0.8.0"
[dev-dependencies.maplit]
version = "1.0.2"
[dev-dependencies.memchr]
version = "2.7.4"
default-features = false
[dev-dependencies.mockall]
version = "0.14.0"
[dev-dependencies.multer]
version = "3.1.0"
features = ["json"]
[dev-dependencies.num-traits]
version = "0.2.19"
[dev-dependencies.once_cell]
version = "1.19.0"
[dev-dependencies.opentelemetry]
version = "0.31"
features = ["testing"]
[dev-dependencies.opentelemetry-datadog]
version = "0.19"
features = ["reqwest-client"]
[dev-dependencies.opentelemetry-proto]
version = "0.31"
features = [
"metrics",
"trace",
"gen-tonic-messages",
"with-serde",
]
[dev-dependencies.opentelemetry-stdout]
version = "0.31"
features = ["trace"]
[dev-dependencies.opentelemetry_sdk]
version = "0.31"
features = ["testing"]
[dev-dependencies.p256]
version = "0.13.2"
[dev-dependencies.pretty_assertions]
version = "1.4.1"
[dev-dependencies.reqwest]
version = "0.12.9"
features = [
"json",
"multipart",
"stream",
]
default-features = false
[dev-dependencies.rhai]
version = "1.23.6"
features = [
"sync",
"serde",
"internals",
"testing-environ",
]
[dev-dependencies.rstest]
version = "0.26.0"
[dev-dependencies.tempfile]
version = "3.10.1"
[dev-dependencies.test-log]
version = "0.2.16"
features = ["trace"]
default-features = false
[dev-dependencies.tower-test]
version = "0.4.0"
[dev-dependencies.tracing-mock]
version = "0.1.0-beta.1"
[dev-dependencies.tracing-opentelemetry]
version = "0.32"
[dev-dependencies.tracing-subscriber]
version = "0.3.20"
features = [
"env-filter",
"fmt",
]
default-features = false
[dev-dependencies.tracing-test]
version = "=0.2.6"
[dev-dependencies.walkdir]
version = "2.5.0"
[dev-dependencies.wiremock]
version = "0.6"
[build-dependencies.serde_json]
version = "1.0.114"
features = [
"preserve_order",
"float_roundtrip",
]
[build-dependencies.tonic-prost-build]
version = "0.14.0"
[target.'cfg(target_os = "linux")'.dev-dependencies.rstack]
version = "0.3.3"
features = ["dw"]
default-features = false
[target."cfg(unix)".dependencies.hyperlocal]
version = "0.9.1"
features = ["client"]
default-features = false
[target."cfg(unix)".dependencies.tikv-jemalloc-ctl]
version = "0.6.0"
features = [
"stats",
"profiling",
]
optional = true
[target."cfg(unix)".dependencies.tikv-jemalloc-sys]
version = "0.6.0"
features = ["profiling"]
[target."cfg(unix)".dependencies.tikv-jemallocator]
version = "0.6.0"
features = ["profiling"]
optional = true
[target."cfg(unix)".dependencies.uname]
version = "0.1.1"
[target."cfg(unix)".dev-dependencies.hyperlocal]
version = "0.9.1"
features = [
"client",
"server",
]
default-features = false
[lints.rust]
boxed-slice-into-iter = "warn"
dependency-on-unit-never-type-fallback = "warn"
deprecated-safe-2024 = "warn"
impl-trait-overcaptures = "warn"
keyword-idents-2024 = "warn"
missing-unsafe-on-extern = "warn"
never-type-fallback-flowing-into-unsafe = "warn"
rust-2024-guarded-string-incompatible-syntax = "warn"
rust-2024-incompatible-pat = "warn"
rust-2024-prelude-collisions = "warn"
static-mut-refs = "warn"
unsafe-attr-outside-unsafe = "warn"
unsafe-op-in-unsafe-fn = "warn"