[package]
edition = "2024"
name = "sunbeam-g2v"
version = "0.4.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Sunbeam Service Framework - A ConnectRPC-based framework for building microservices"
homepage = "https://github.com/sunbeamdotpt/g2v"
readme = "README.md"
keywords = [
"microservice",
"connectrpc",
"grpc",
"axum",
"framework",
]
categories = [
"web-programming",
"network-programming",
"asynchronous",
]
license = "MIT"
repository = "https://github.com/sunbeamdotpt/g2v"
[features]
all = [
"axum",
"standalone",
"metrics",
"tracing",
"logging",
"sqlx",
"sqlx-postgres",
"nats",
"redis",
"auth",
"vault",
"election",
"tls",
"cache",
"client",
"client-connectrpc",
]
auth = [
"dep:sha2",
"dep:hex",
"dep:ulid",
"dep:reqwest",
"axum",
]
axum = [
"dep:axum",
"dep:tower-http",
"dep:reqwest",
"connectrpc/axum",
]
cache = [
"dep:lru",
"dep:gxhash",
"dep:http-body-util",
"axum",
]
client = [
"dep:reqwest",
"dep:tower-http",
"cache",
]
client-connectrpc = [
"client",
"connectrpc/client",
]
default = [
"axum",
"metrics",
"tracing",
"logging",
"sqlx",
"sqlx-postgres",
"nats",
"auth",
"vault",
"election",
"cache",
"client",
]
election = [
"vault",
"nats",
]
logging = [
"dep:tracing",
"dep:tracing-subscriber",
]
metrics = [
"dep:prometheus",
"dep:metrics",
"dep:metrics-exporter-prometheus",
"dep:tracing",
]
nats = [
"dep:async-nats",
"dep:url",
]
redis = ["dep:redis"]
sqlx = ["dep:sqlx"]
sqlx-postgres = [
"sqlx",
"sqlx?/postgres",
"sqlx?/runtime-tokio",
]
standalone = [
"dep:hyper",
"dep:hyper-util",
"connectrpc/server",
]
tls = [
"connectrpc/tls",
"dep:tokio-rustls",
"dep:rustls",
]
tracing = [
"dep:opentelemetry",
"dep:tracing-opentelemetry",
"dep:opentelemetry_sdk",
]
vault = [
"dep:vaultrs",
"dep:tokio-rustls",
"dep:rustls",
]
[lib]
name = "sunbeam_g2v"
path = "src/lib.rs"
[[example]]
name = "simple"
path = "examples/simple/main.rs"
required-features = [
"axum",
"auth",
"metrics",
"tracing",
"logging",
]
[[test]]
name = "auth_middleware_integration"
path = "tests/auth_middleware_integration.rs"
[[test]]
name = "authorization_integration"
path = "tests/authorization_integration.rs"
[[test]]
name = "client_e2e"
path = "tests/client_e2e.rs"
[[test]]
name = "client_middleware_integration"
path = "tests/client_middleware_integration.rs"
[[test]]
name = "db_integration"
path = "tests/db_integration.rs"
[[test]]
name = "election_nats_integration"
path = "tests/election_nats_integration.rs"
[[test]]
name = "election_vault_integration"
path = "tests/election_vault_integration.rs"
[[test]]
name = "health_integration"
path = "tests/health_integration.rs"
[[test]]
name = "introspection_integration"
path = "tests/introspection_integration.rs"
[[test]]
name = "nats_integration"
path = "tests/nats_integration.rs"
[[test]]
name = "sso_gateway_auth_integration"
path = "tests/sso_gateway_auth_integration.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.arc-swap]
version = "1.9"
[dependencies.async-nats]
version = "0.49"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
features = [
"http2",
"macros",
]
optional = true
[dependencies.buffa]
version = "0.7"
features = ["json"]
[dependencies.buffa-types]
version = "0.7"
features = ["json"]
[dependencies.bytes]
version = "1"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.connectrpc]
version = "0.7"
features = [
"gzip",
"zstd",
"streaming",
"server",
]
[dependencies.dashmap]
version = "6"
[dependencies.figment]
version = "0.10"
features = [
"env",
"toml",
"json",
]
[dependencies.futures]
version = "0.3"
[dependencies.gxhash]
version = "3.5"
optional = true
[dependencies.hex]
version = "0.4"
optional = true
[dependencies.http]
version = "1"
[dependencies.http-body]
version = "1"
[dependencies.http-body-util]
version = "0.1"
optional = true
[dependencies.hyper]
version = "1"
features = ["full"]
optional = true
[dependencies.hyper-util]
version = "0.1"
features = ["full"]
optional = true
[dependencies.log]
version = "0.4"
[dependencies.lru]
version = "0.18"
optional = true
[dependencies.metrics]
version = "0.24"
optional = true
[dependencies.metrics-exporter-prometheus]
version = "0.18"
optional = true
[dependencies.opentelemetry]
version = "0.32"
optional = true
[dependencies.opentelemetry_sdk]
version = "0.32"
features = [
"rt-tokio",
"trace",
]
optional = true
[dependencies.prometheus]
version = "0.14"
optional = true
[dependencies.rand]
version = "0.10"
[dependencies.redis]
version = "1.2"
optional = true
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
"form",
]
optional = true
default-features = false
[dependencies.rustls]
version = "0.23"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
optional = true
[dependencies.sqlx]
version = "0.9"
features = [
"runtime-tokio",
"tls-rustls",
]
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-rustls]
version = "0.26"
optional = true
[dependencies.tower]
version = "0.5"
features = ["full"]
[dependencies.tower-http]
version = "0.7"
features = [
"trace",
"timeout",
"catch-panic",
"cors",
]
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.tracing-opentelemetry]
version = "0.33"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
"ansi",
]
optional = true
[dependencies.ulid]
version = "1"
optional = true
[dependencies.url]
version = "2"
optional = true
[dependencies.uuid]
version = "1"
features = [
"v4",
"serde",
]
[dependencies.vaultrs]
version = "0.8"
optional = true
[dev-dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
"form",
]
[dev-dependencies.serde_json]
version = "1.0"
[dev-dependencies.testcontainers]
version = "0.27"
[dev-dependencies.testcontainers-modules]
version = "0.15"
features = [
"postgres",
"nats",
]
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"macros",
"test-util",
]
[dev-dependencies.tokio-test]
version = "0.4"
[build-dependencies.connectrpc-build]
version = "0.7"
[lints.rust]
refining_impl_trait_internal = "allow"
refining_impl_trait_reachable = "allow"
[profile.dev]
opt-level = 1
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
strip = true
[profile.test]
debug = 2
inherits = "dev"