Some checks failed
repo hygiene / hygiene (push) Has been cancelled
Delete the vendored xitca-web framework checkout at repo root and repoint all consumers at the published crates: - nimanyatta/Cargo.toml: drop path overrides on xitca-web (deps + dev-deps), remove the xitca-client dep (never published on crates.io) from the manifest and the load/b_server features, and remove the [patch.crates-io] section that forced every xitca-* crate onto the vendored checkout. - nigig-lite/crates/common: xitca-web path dep -> version 0.8 from crates.io (vendored snapshot was 0.8.1, identical). - Test suites (shared_test_client, security_suite, enhanced_security, enhanced_security_tests) and kra-etims-sdk: migrate xitca-client HTTP usage to reqwest from crates.io, preserving request semantics (header-override order, error mapping). Verified in a fresh clone on the pinned toolchain (1.97.1): nigig-common checks, security/enhanced suites check, and the session/fast/regression harness binaries build.
429 lines
11 KiB
TOML
429 lines
11 KiB
TOML
[package]
|
|
name = "nimanyatta"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
nimanyatta-protocol = { path = "./crates/nimanyatta-protocol", optional = true}
|
|
nigig-common = { path = "../nigig-lite/crates/common", optional = true }
|
|
clap = { version = "4.5", optional = true }
|
|
|
|
# Web framework
|
|
xitca-web = { version = "0.8", features = [
|
|
"codegen",
|
|
"params",
|
|
"logger",
|
|
"websocket",
|
|
"cookie",
|
|
"json",
|
|
"rate-limit",
|
|
"tower-http-compat",
|
|
], optional = true }
|
|
xitca-server = { version = "0.7", optional = true }
|
|
xitca-http = { version = "0.9.3", features = ["http1", "http2", "http3", "openssl", "rustls"], optional = true }
|
|
xitca-service = {version = "0.3", optional = true}
|
|
tower-http = { version = "0.6.8", features = ["cors", "trace"], optional = true }
|
|
|
|
http-ws = { version = "0.3.0", features = ["stream"], optional = true }
|
|
http-body-util = { version = "0.1.0-rc.3", optional = true }
|
|
futures = { version = "0.3.31", optional = true }
|
|
tokio = { version = "1", features = [
|
|
"rt",
|
|
"rt-multi-thread",
|
|
"sync",
|
|
"macros",
|
|
"time",
|
|
], optional = true }
|
|
|
|
flume = { version = "0.12.0", optional = true }
|
|
pingora-core = { version = "0.6.0", optional = true }
|
|
pingora-proxy = { version = "0.6.0", optional = true }
|
|
pingora-load-balancing = { version = "0.6.0", optional = true }
|
|
pingora-http = { version = "0.6.0", optional = true }
|
|
pingora-cache = { version = "0.6.0", optional = true }
|
|
pingora-limits = { version = "0.6.0", optional = true }
|
|
once_cell = { version = "1.21.3", optional = true }
|
|
async-trait = { version = "0.1.83", optional = true }
|
|
log = { version = "0.4.27", optional = true }
|
|
env_logger = { version = "0.11.8", optional = true }
|
|
bytes = { version = "1", optional = true }
|
|
rand = { version = "0.8", optional = true }
|
|
futures-util = { version = "0.3.31", optional = true }
|
|
tokio-tungstenite = { version = "0.27", optional = true }
|
|
tokio-util = { version = "0.7", optional = true }
|
|
sysinfo = { version = "0.37.0", optional = true }
|
|
url = { version = "2.5", optional = true }
|
|
lettre = { version = "0.11.18", default-features = false, features = [
|
|
"tokio1",
|
|
"tokio1-native-tls",
|
|
"smtp-transport",
|
|
"pool",
|
|
"hostname",
|
|
"builder",
|
|
], optional = true }
|
|
error_set = { version = "0.9.1", optional = true }
|
|
dashmap = { version = "6.1.0", optional = true }
|
|
chrono = { version = "0.4.41", features = ["serde"], optional = true }
|
|
tungstenite = { version = "0.27.0", optional = true }
|
|
ulid = { version = "1.2.1", features = ["serde"], optional = true }
|
|
libc = { version = "0.2.175", optional = true }
|
|
serde = { version = "1.0", features = ["derive"], optional = true }
|
|
serde_json = { version = "1.0", optional = true }
|
|
iggy = { version = "0.7.0", optional = true }
|
|
postcard = { version = "1.1.3", features = ["use-std"], optional = true }
|
|
atomic_float = { version = "1.1.0", optional = true }
|
|
tracing = { version = "0.1.41", optional = true }
|
|
tracing-subscriber = { version = "0.3.20", features = [
|
|
"env-filter",
|
|
"json",
|
|
"fmt",
|
|
"ansi",
|
|
], optional = true }
|
|
tracing-appender = { version = "0.2", optional = true }
|
|
tracing-bunyan-formatter = { version = "0.3.10", optional = true }
|
|
metrics = { version = "0.24.2", optional = true }
|
|
metrics-exporter-prometheus = { version = "0.17.2", optional = true }
|
|
tracing-opentelemetry = { version = "0.31", optional = true }
|
|
opentelemetry = { version = "0.30", features = [
|
|
"trace",
|
|
"logs",
|
|
"metrics",
|
|
], optional = true }
|
|
opentelemetry_sdk = { version = "0.30", features = [
|
|
"trace",
|
|
"metrics",
|
|
"rt-tokio",
|
|
"logs",
|
|
"trace",
|
|
"tokio",
|
|
"experimental_async_runtime",
|
|
"experimental_logs_batch_log_processor_with_async_runtime",
|
|
"experimental_trace_batch_span_processor_with_async_runtime",
|
|
], optional = true }
|
|
opentelemetry-otlp = { version = "0.30", features = [
|
|
"tonic",
|
|
"metrics",
|
|
"logs",
|
|
"trace",
|
|
"grpc-tonic",
|
|
"http",
|
|
"http-proto",
|
|
"reqwest-client",
|
|
"tokio",
|
|
], optional = true }
|
|
opentelemetry-semantic-conventions = { version = "0.30", optional = true }
|
|
tracing-futures = { version = "0.2", optional = true }
|
|
prometheus-client = { version = "0.23.1", optional = true }
|
|
tracing-serde = { version = "0.2", optional = true }
|
|
reqwest = { version = "0.12.23", features = ["json"], optional = true }
|
|
moka = { version = "0.12.10", features = ["future"], optional = true }
|
|
xxhash-rust = { version = "0.8.15", features = ["xxh3"], optional = true }
|
|
crossbeam-channel = { version = "0.5.15", optional = true }
|
|
crossbeam-queue = { version = "0.3.12", optional = true }
|
|
# [target.'cfg(target_os = "linux")'.dependencies]
|
|
# tokio-uring = { version = "0.5.0", optional = true }
|
|
# io-uring = { version = "0.7.10", optional = true }
|
|
# nix = { version = "0.29", features = ["fs"], optional = true }
|
|
surrealdb = { version = "3.0.5", features = [ "kv-rocksdb", "kv-mem" ], optional = true }
|
|
# surrealdb = { version = "2.6.0", features = ["kv-mem", "kv-rocksdb"] }
|
|
scylla = { version = "1.6.0", optional = true }
|
|
rusty_paseto = { version = "0.9", optional = true }
|
|
# rusty_paseto = "0.9.0"
|
|
sha2 = { version = "0.11.0", optional = true }
|
|
# sha2 = "0.11.0"
|
|
argon2 = { version = "0.5", features = [ "std" ], optional = true }
|
|
|
|
hex = { version = "0.4", optional = true }
|
|
base64 = { version = "0.22", optional = true }
|
|
parking_lot = { version = "0.12", optional = true }
|
|
# Config
|
|
dotenvy = { version = "0.15", optional = true }
|
|
phonenumber = { version = "0.3", optional = true }
|
|
|
|
# Geolocation
|
|
maxminddb = { version = "0.23", optional = true }
|
|
|
|
# Multi-tenant (module, not crate)
|
|
toml = { version = "0.8", optional = true }
|
|
|
|
# Already present but confirm it's in b_server:
|
|
# ulid, serde, serde_json, tokio, tracing, dashmap, chrono
|
|
|
|
# Already present but confirm it's in b_server:
|
|
# ulid, serde, serde_json, tokio, tracing, dashmap, chrono
|
|
[dev-dependencies]
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
xitca-web = { version = "0.8", features = ["websocket"] }
|
|
reqwest = { version = "0.12.23", default-features = false, features = ["json"] }
|
|
serde_json = "1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
tokio = { version = "1", features = [
|
|
"macros",
|
|
"rt-multi-thread",
|
|
"process",
|
|
"sync",
|
|
"time",
|
|
] }
|
|
tokio-tungstenite = "0.27"
|
|
futures-util = "0.3.31"
|
|
|
|
[features]
|
|
# The 'server' feature enables the xitca-web dependency
|
|
server = ["xitca-web"]
|
|
# io_uring feature - only makes sense on Linux
|
|
# io_uring = []
|
|
uring = ["xitca-server/io-uring", "xitca-http/io-uring"]
|
|
|
|
# Linux-specific io_uring activation
|
|
# io_uring_linux = ["tokio-uring", "io-uring", "nix"]
|
|
|
|
load = [
|
|
"chrono",
|
|
"tokio",
|
|
"tokio-tungstenite",
|
|
"futures",
|
|
"futures-util",
|
|
"tungstenite",
|
|
"libc",
|
|
"postcard",
|
|
"serde",
|
|
"serde_json",
|
|
"reqwest",
|
|
"rand",
|
|
"ulid",
|
|
"nimanyatta-protocol",
|
|
"nigig-common",
|
|
"tracing",
|
|
"tracing-subscriber",
|
|
"url",
|
|
"clap",
|
|
]
|
|
gty_server = [
|
|
"xitca-web",
|
|
"async-trait",
|
|
"moka",
|
|
"xxhash-rust",
|
|
"xitca-server",
|
|
"xitca-http",
|
|
"reqwest",
|
|
"tracing",
|
|
"xitca-http",
|
|
"tokio",
|
|
"atomic_float",
|
|
"chrono",
|
|
"rand",
|
|
"serde",
|
|
"serde_json",
|
|
"http-ws",
|
|
"futures-util",
|
|
"http-body-util",
|
|
"tokio-tungstenite",
|
|
"sysinfo",
|
|
"prometheus-client",
|
|
"lettre",
|
|
"dashmap",
|
|
"libc",
|
|
"once_cell",
|
|
"futures",
|
|
"bytes",
|
|
"postcard",
|
|
"iggy",
|
|
]
|
|
b_server = [
|
|
"xitca-web",
|
|
"nimanyatta-protocol",
|
|
"nigig-common",
|
|
"tower-http",
|
|
"error_set",
|
|
"iggy",
|
|
"tokio",
|
|
"flume",
|
|
"moka",
|
|
"xxhash-rust",
|
|
"async-trait",
|
|
"xitca-server",
|
|
"xitca-http",
|
|
"xitca-service",
|
|
"reqwest",
|
|
"atomic_float",
|
|
"chrono",
|
|
"rand",
|
|
"base64",
|
|
"serde",
|
|
"serde_json",
|
|
"http-ws",
|
|
"futures-util",
|
|
"http-body-util",
|
|
"tokio-tungstenite",
|
|
"sysinfo",
|
|
"prometheus-client",
|
|
"tracing",
|
|
"tracing-subscriber",
|
|
"tracing-bunyan-formatter",
|
|
"tracing-opentelemetry",
|
|
"opentelemetry",
|
|
"opentelemetry_sdk",
|
|
"opentelemetry-otlp",
|
|
"opentelemetry-semantic-conventions",
|
|
"tracing-futures",
|
|
"tracing-serde",
|
|
"lettre",
|
|
"dashmap",
|
|
"libc",
|
|
"once_cell",
|
|
"futures",
|
|
"bytes",
|
|
"postcard",
|
|
"crossbeam-channel",
|
|
"crossbeam-queue",
|
|
"ulid",
|
|
"tracing-appender",
|
|
"surrealdb",
|
|
"rusty_paseto",
|
|
"hex",
|
|
"parking_lot",
|
|
"dotenvy",
|
|
"phonenumber",
|
|
"argon2",
|
|
"scylla",
|
|
"tokio-util",
|
|
"sha2",
|
|
"maxminddb",
|
|
"toml",
|
|
# "tenant", // tenant is a module in src/, not a crate
|
|
]
|
|
|
|
# b_server_linux = ["b_server", "io_uring", "io_uring_linux"]
|
|
|
|
# The 'proxy' feature enables all pingora dependencies
|
|
proxy = [
|
|
"pingora-core",
|
|
"pingora-proxy",
|
|
"pingora-load-balancing",
|
|
"pingora-http",
|
|
"pingora-cache",
|
|
"pingora-limits",
|
|
"async-trait",
|
|
"once_cell",
|
|
"tokio",
|
|
"bytes",
|
|
"log",
|
|
"env_logger",
|
|
"dashmap",
|
|
"ulid",
|
|
]
|
|
# default = ["server", "proxy"]
|
|
|
|
[[bin]]
|
|
name = "broadcast_server"
|
|
path = "src/broadcast_server.rs"
|
|
required-features = ["b_server"]
|
|
|
|
[[bin]]
|
|
name = "chat_load_tester"
|
|
path = "src/chat_load_tester.rs"
|
|
# path = "src/enhanced_security.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "chat_load_tester_consistency"
|
|
path = "src/chat_load_tester_consistency.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "chat_load_tester_realistic"
|
|
path = "src/chat_load_tester_realistic.rs"
|
|
required-features = ["load"]
|
|
|
|
|
|
[[bin]]
|
|
name = "proxy"
|
|
path = "src/proxy/mod.rs"
|
|
required-features = ["proxy"]
|
|
|
|
# [[bin]]
|
|
# name = "proxy"
|
|
# path = "src/proxy.rs"
|
|
# required-features = ["proxy"]
|
|
|
|
[[bin]]
|
|
name = "fast_integration_suite"
|
|
path = "src/fast_integration_suite.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "security_suite"
|
|
path = "src/security_suite.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "regression_suite"
|
|
path = "src/regression_suite.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "session_limit_test"
|
|
path = "src/session_limit_test.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "enhanced_security"
|
|
path = "src/enhanced_security.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "enhanced_security_tests"
|
|
path = "src/enhanced_security_tests.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "multi_tenant_suite"
|
|
path = "src/multi_tenant_suite.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "ws_tenant_suite"
|
|
path = "src/ws_tenant_suite.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "tenant_security_suite"
|
|
path = "src/tenant_security_suite.rs"
|
|
required-features = ["load"]
|
|
|
|
[[bin]]
|
|
name = "gologin"
|
|
path = "src/gologin.rs"
|
|
required-features = ["load"]
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
opt-level = 3
|
|
strip = "debuginfo"
|
|
|
|
[profile.bench]
|
|
inherits = "release"
|
|
debug = true
|
|
|
|
[[bench]]
|
|
name = "latency"
|
|
harness = false
|
|
required-features = ["b_server"]
|
|
|
|
[[bench]]
|
|
name = "bandwidth"
|
|
harness = false
|
|
required-features = ["b_server"]
|
|
|
|
[[bench]]
|
|
name = "gateway"
|
|
harness = false
|
|
required-features = ["b_server"]
|
|
|
|
|
|
# nimanyatta is a standalone workspace: it must not be absorbed by the
|
|
# nigig-org root workspace (its deps resolve relative to this directory).
|
|
[workspace]
|
|
|