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