-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
120 lines (104 loc) · 3.15 KB
/
Cargo.toml
File metadata and controls
120 lines (104 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
[package]
name = "axon"
version = "0.1.0"
edition = "2024"
description = "A high-performance API gateway and reverse proxy with hexagonal architecture"
license = "Apache-2.0"
repository = "https://github.com/longcipher/axon"
homepage = "https://github.com/longcipher/axon"
documentation = "https://docs.rs/axon"
readme = "README.md"
keywords = ["api-gateway", "reverse-proxy", "http", "axum", "load-balancer"]
categories = [
"network-programming",
"web-programming::http-server",
"asynchronous",
]
[lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(test)'] }
[features]
default = []
# Enable experimental HTTP/3 (QUIC) support. Requires rustls/QUIC stack.
http3 = []
[dependencies]
async-trait = "0.1.89"
axum = { version = "0.8.8", features = ["http1", "http2", "ws"] }
clap = { version = "4.6.0", features = ["derive"] }
futures-util = { version = "0.3.32", default-features = false, features = [
"std",
] }
hyper = { version = "1.8.1", features = ["full"] }
hyper-rustls = "0.27.7"
rustls = "0.23.37"
rustls-native-certs = "0.8.3"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
thiserror = "2.0.18"
tokio = { version = "1.50.0", features = ["full"] }
tokio-stream = { version = "0.1.18", features = ["net"] }
tokio-util = { version = "0.7.18", features = ["compat"] }
tower = "0.5.3"
tower-http = { version = "0.6.8", features = [
"fs",
"trace",
"compression-full",
] }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = [
"json",
"env-filter",
"fmt",
] }
# Use eyre instead of anyhow
color-eyre = "0.6.5"
eyre = "0.6.12"
# Use config for configuration loading (supports multiple formats)
config = "0.15.21"
# OpenTelemetry dependencies for OTLP metrics export
opentelemetry = "0.31.0"
opentelemetry-otlp = { version = "0.31.0", features = [
"grpc-tonic",
"metrics",
] }
opentelemetry-semantic-conventions = "0.31.0"
opentelemetry_sdk = { version = "0.31.0", features = ["metrics"] }
tonic = "0.14.5"
http = "1.4.0"
notify = "8.2.0"
rand = "0.10.0"
arc-swap = "1.8.2"
scc = "3.6.9"
# Additional dependencies for hexagonal architecture
bytes = "1.11.1"
http-body-util = "0.1.3"
hyper-util = { version = "0.1.20", features = ["full"] }
# Rate limiting dependencies
governor = "0.10.4"
# WebSocket proxying
tokio-tungstenite = { version = "0.28.0", features = [
"rustls-tls-native-roots",
] }
base64 = "0.22.1"
chrono = { version = "0.4.44", features = ["serde"] }
humantime = "2.3.0"
once_cell = "1.21.4"
regex = "1.12.3"
sha1 = "0.10.6"
url = "2.5.8"
urlencoding = "2.1.3"
uuid = { version = "1.22.0", features = ["v4", "serde"] }
hpx = { version = "2.3.1", features = ["json"] }
rustls-acme = { version = "0.15.1", features = ["axum", "tokio"] }
rustls-pemfile = "2.2.0"
tls-listener = { version = "0.11.2", features = ["rustls", "tokio-net"] }
tokio-rustls = "0.26.4"
# HTTP/3 (QUIC) support crates (feature currently experimental)
h3 = "0.0.8"
h3-quinn = "0.0.10"
matchit = "0.9.1"
quinn = { version = "0.11.9", default-features = true }
[dev-dependencies]
rcgen = "0.14.7"
tempfile = "3.27.0"
[package.metadata.cargo-machete]
ignored = ["opentelemetry-semantic-conventions", "tonic"]