# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.91.1"
name = "apollo-router"
version = "2.11.0"
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 = ["serde_regex"]

[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_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.25.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.11.0"

[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.14.0"

[dependencies.heck]
version = "0.5.0"

[dependencies.hex]
version = "0.4.3"
features = ["serde"]

[dependencies.hickory-resolver]
version = "0.25.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.36.0"
default-features = false

[dependencies.jsonwebtoken]
version = "9.3.0"

[dependencies.libc]
version = "0.2.155"

[dependencies.linkme]
version = "0.3.30"

[dependencies.log]
version = "0.4.22"

[dependencies.lru]
version = "0.16.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.24.0"
features = [
    "trace",
    "metrics",
]

[dependencies.opentelemetry-aws]
version = "0.12.0"

[dependencies.opentelemetry-http]
version = "0.13.0"

[dependencies.opentelemetry-jaeger-propagator]
version = "0.3.0"

[dependencies.opentelemetry-otlp]
version = "0.17.0"
features = [
    "grpc-tonic",
    "gzip-tonic",
    "tonic",
    "tls",
    "http-proto",
    "metrics",
    "reqwest-client",
    "trace",
]
default-features = false

[dependencies.opentelemetry-prometheus]
version = "0.17.0"

[dependencies.opentelemetry-semantic-conventions]
version = "0.16.0"

[dependencies.opentelemetry-zipkin]
version = "0.22.0"
features = [
    "reqwest-client",
    "reqwest-rustls",
]
default-features = false

[dependencies.opentelemetry_sdk]
version = "0.24.1"
features = [
    "rt-tokio",
    "trace",
]
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.13"

[dependencies.prost]
version = "0.13.0"

[dependencies.prost-types]
version = "0.13.0"

[dependencies.proteus]
version = "0.5.0"

[dependencies.rand]
version = "0.9.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 = "2.5.0"
features = ["inline"]

[dependencies.static_assertions]
version = "1.1.0"

[dependencies.strum]
version = "0.27.0"
features = ["derive"]

[dependencies.sys-info]
version = "0.9.1"

[dependencies.sysinfo]
version = "0.37.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.5.3"
package = "astral-tokio-tar"

[dependencies.tokio-tungstenite]
version = "0.28.0"
features = ["rustls-tls-native-roots"]

[dependencies.tokio-util]
version = "0.7.11"
features = [
    "net",
    "codec",
    "time",
    "compat",
]

[dependencies.tonic]
version = "0.12.3"
features = [
    "transport",
    "tls",
    "tls-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.6.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.24.0"
features = ["testing"]

[dev-dependencies.opentelemetry-datadog]
version = "0.12.0"
features = ["reqwest-client"]

[dev-dependencies.opentelemetry-proto]
version = "0.7.0"
features = [
    "metrics",
    "trace",
    "gen-tonic-messages",
    "with-serde",
]

[dev-dependencies.opentelemetry-stdout]
version = "0.5.0"
features = ["trace"]

[dev-dependencies.opentelemetry_sdk]
version = "0.24.1"
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.25.0"

[dev-dependencies.tracing-subscriber]
version = "0.3.20"
features = [
    "env-filter",
    "fmt",
]
default-features = false

[dev-dependencies.tracing-test]
version = "=0.2.5"

[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-build]
version = "0.12.3"

[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"
