[package]
name = "apollo-router"
version = "1.25.0-alpha.1"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
repository = "https://github.com/apollographql/router/"
documentation = "https://docs.rs/apollo-router"
description = "A configurable, high-performance routing runtime for Apollo Federation 🚀"
license = "Elastic-2.0"
rust-version = "1.70.0"
edition = "2021"
build = "build/main.rs"
[[bin]]
name = "router"
path = "src/main.rs"
[features]
default = ["global-allocator"]
global-allocator = []
dhat-heap = ["dhat"]
dhat-ad-hoc = ["dhat"]
failfast = []
console = ["tokio/tracing", "console-subscriber"]
docs_rs = ["router-bridge/docs_rs"]
[package.metadata.docs.rs]
features = ["docs_rs"]
[dependencies]
askama = "0.11.1"
access-json = "0.1.0"
anyhow = "1.0.72"
apollo-compiler = "0.10.0"
apollo-encoder = "0.5.1"
apollo-parser = "0.5.3"
arc-swap = "1.6.0"
async-compression = { version = "0.3.15", features = [
"tokio",
"brotli",
"gzip",
"deflate",
] }
async-trait = "0.1.71"
atty = "0.2.14"
axum = { version = "0.6.18", features = ["headers", "json", "original-uri"] }
base64 = "0.20.0"
buildstructor = "0.5.3"
bytes = "1.4.0"
clap = { version = "4.3.15", default-features = false, features = [
"env",
"derive",
"std",
"help",
] }
console-subscriber = { version = "0.1.10", optional = true }
ci_info = {version="0.14.10", features=["serde-1"] }
dashmap = { version = "5.5.0", features = ["serde"] }
derivative = "2.2.0"
derive_more = { version = "0.99.17", default-features = false, features = [
"from",
"display",
] }
dhat = { version = "0.3.2", optional = true }
diff = "0.1.13"
directories = "4.0.1"
displaydoc = "0.2"
flate2 = "1.0.24"
fred = { version = "6.3.0", features = ["enable-rustls", "no-client-setname"] }
futures = { version = "0.3.28", features = ["thread-pool"] }
graphql_client = "0.11.0"
hex = "0.4.3"
http = "0.2.9"
http-body = "0.4.5"
heck = "0.4.1"
humantime = "2.1.0"
humantime-serde = "1.1.1"
hyper = { version = "0.14.27", features = ["server", "client"] }
hyper-rustls = { version = "0.23.2", features = ["http1", "http2"] }
indexmap = { version = "1.9.3", features = ["serde-1"] }
itertools = "0.10.5"
jsonpath_lib = "0.3.0"
jsonschema = { version = "0.16.1", default-features = false }
jsonwebtoken = "8.3.0"
lazy_static = "1.4.0"
libc = "0.2.147"
linkme = "0.3.12"
lru = "0.8.1"
maplit = "1.0.2"
mediatype = "0.19.15"
mockall = "0.11.4"
mime = "0.3.17"
multer = "2.1.0"
multimap = "0.8.3"
notify = { version = "5.2.0", default-features = false, features=["macos_kqueue"] }
nu-ansi-term = "0.47"
once_cell = "1.18.0"
opentelemetry = { version = "0.19.0", features = [
"rt-tokio",
"metrics",
] }
opentelemetry-datadog = { version = "0.7.0", features = ["reqwest-client"] }
opentelemetry-http = "0.8.0"
opentelemetry-jaeger = { version = "0.18.0", features = [
"collector_client",
"reqwest_collector_client",
"rt-tokio",
] }
opentelemetry-otlp = { version = "0.12.0", default-features = false, features = [
"grpc-tonic",
"tonic",
"tls",
"http-proto",
"metrics",
"reqwest-client",
] }
opentelemetry-semantic-conventions = "0.11.0"
opentelemetry-zipkin = { version = "0.17.0", default-features = false, features = [
"reqwest-client",
"reqwest-rustls",
] }
opentelemetry-prometheus = "0.12.0"
paste = "1.0.14"
pin-project-lite = "0.2.10"
prometheus = "0.13"
prost = "0.11.9"
prost-types = "0.11.9"
proteus = "0.5.0"
rand = "0.8.5"
rhai = { version = "1.15.1", features = ["sync", "serde", "internals"] }
regex = "1.9.1"
reqwest = { version = "0.11.18", default-features = false, features = [
"rustls-tls",
"rustls-native-certs",
"json",
"stream",
] }
router-bridge = "=0.4.0+v2.4.10"
rust-embed="6.8.1"
rustls = "0.20.8"
rustls-pemfile = "1.0.3"
schemars = { version = "0.8.12", features = ["url"] }
shellexpand = "3.1.0"
sha2 = "0.10.7"
serde = { version = "1.0.171", features = ["derive", "rc"] }
serde_json_bytes = { version = "0.2.1", features = ["preserve_order"] }
serde_json = { version = "1.0.103", features = ["preserve_order", "float_roundtrip"] }
serde_urlencoded = "0.7.1"
serde_yaml = "0.8.26"
static_assertions = "1.1.0"
strum_macros = "0.24.3"
sys-info = "0.9.1"
thiserror = "1.0.43"
tokio = { version = "1.29.1", features = ["full"] }
tokio-stream = { version = "0.1.14", features = ["sync", "net"] }
tokio-util = { version = "0.7.8", features = ["net", "codec", "time"] }
tonic = { version = "0.8.3", features = ["transport", "tls", "tls-roots", "gzip"] }
tower = { version = "0.4.13", features = ["full"] }
tower-http = { version = "0.3.5", features = [
"add-extension",
"trace",
"cors",
"compression-br",
"compression-deflate",
"compression-gzip",
"decompression-br",
"decompression-deflate",
"decompression-gzip",
"timeout",
] }
tower-service = "0.3.2"
tracing = "0.1.37"
tracing-core = "0.1.30"
tracing-futures = { version = "0.2.5", features = ["futures-03"] }
tracing-opentelemetry = "0.19.0"
tracing-subscriber = { version = "0.3.11", features = ["env-filter", "json"] }
url = { version = "2.4.0", features = ["serde"] }
urlencoding = "2.1.2"
uuid = { version = "1.4.1", features = ["serde", "v4"] }
yaml-rust = "0.4.5"
wiremock = "0.5.19"
wsl = "0.1.0"
tokio-tungstenite = { version = "0.18.0", features = ["rustls-tls-native-roots"] }
tokio-rustls = "0.23.4"
http-serde = "1.1.2"
hmac = "0.12.1"
parking_lot = "0.12.1"
memchr = "2.5.0"
brotli = "3.3.4"
zstd = "0.12.3"
zstd-safe = "6.0.5"
rand_core = "0.6.4"
[target.'cfg(macos)'.dependencies]
uname = "0.1.1"
[target.'cfg(unix)'.dependencies]
uname = "0.1.1"
[target.'cfg(target_os = "linux")'.dependencies]
tikv-jemallocator = "0.5"
[dev-dependencies]
axum = { version = "0.6.18", features = ["headers", "json", "original-uri", "ws"] }
ecdsa = { version = "0.15.1", features = ["signing", "pem", "pkcs8"] }
fred = { version = "6.3.0", features = ["enable-rustls", "no-client-setname"] }
futures-test = "0.3.28"
insta = { version = "1.31.0", features = ["json", "redactions", "yaml"] }
introspector-gadget = "0.2.2"
maplit = "1.0.2"
memchr = { version = "2.5.0", default-features = false }
mockall = "0.11.4"
once_cell = "1.18.0"
p256 = "0.12.0"
rand_core = "0.6.4"
redis = { version = "0.21.7", features = ["tokio-comp"] }
reqwest = { version = "0.11.18", default-features = false, features = [
"json",
"stream",
] }
rhai = { version = "1.15.1", features = ["sync", "serde", "internals", "testing-environ"] }
similar-asserts = "1.4.2"
tempfile = "3.6.0"
test-log = { version = "0.2.12", default-features = false, features = [
"trace",
] }
test-span = "0.7"
toml = "0.7"
tower-test = "0.4.0"
tracing-subscriber = { version = "0.3", default-features = false, features = [
"env-filter",
"fmt",
] }
tracing-test = "0.2.2"
walkdir = "2.3.3"
wiremock = "0.5.19"
[target.'cfg(target_os = "linux")'.dev-dependencies]
rstack = { version = "0.3.3", features = ["dw"], default-features = false }
[build-dependencies]
tonic-build = "0.8.4"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[bench]]
name = "huge_requests"
harness = false