[package]
name = "microkit"
description = "MicroKit library for creating a service"
publish = true
version.workspace = true
edition.workspace = true
authors.workspace = true
repository.workspace = true
license-file.workspace = true
readme.workspace = true
keywords.workspace = true
[dependencies]
microkit-macros = "0.29.0"
anyhow = { workspace = true }
log = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml_ng = { workspace = true }
tokio = { workspace = true }
axum = { version = "0.8", features = ["macros"] }
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = [
"env-filter",
], optional = true }
sea-orm = { version = "2.0.0-rc.31", features = [
"debug-print",
"runtime-tokio-native-tls",
"sqlx-postgres",
], optional = true }
sea-orm-migration = { version = "2.0.0-rc.31", features = [
"runtime-tokio-native-tls",
"sqlx-postgres",
], optional = true }
dapr = { version = "0.17.0", optional = true }
tonic = { version = "0.12.3", optional = true }
utoipa = { version = "5.4", features = ["axum_extras"], optional = true }
utoipa-axum = { version = "0.2", optional = true }
utoipa-rapidoc = { version = "6.0", features = ["axum"], optional = true }
utoipa-redoc = { version = "6.0", features = ["axum"], optional = true }
utoipa-scalar = { version = "0.3", features = ["axum"], optional = true }
utoipa-swagger-ui = { version = "9.0", features = ["axum"], optional = true }
axum-otel = { version = "0.30.10", optional = true }
axum-otel-metrics = { version = "0.12", optional = true }
opentelemetry = { version = "0.30", features = [
"trace",
"metrics",
], optional = true }
opentelemetry-appender-log = { version = "0.30", optional = true }
opentelemetry-http = { version = "0.30", optional = true }
opentelemetry-otlp = { version = "0.30", features = [
"http-proto",
"http-json",
"grpc-tonic",
"logs",
"reqwest-blocking-client",
"reqwest-rustls",
], optional = true }
opentelemetry-semantic-conventions = { version = "0.30", optional = true }
opentelemetry_sdk = { version = "0.30", features = [
"rt-tokio",
"metrics",
"logs",
"spec_unstable_metrics_views",
], optional = true }
tower-http = { version = "0.6", features = ["trace", "cors"], optional = true }
tracing-opentelemetry = { version = "0.31", optional = true }
async-trait = { version = "0.1", optional = true }
axum-extra = { version = "0.12", features = ["typed-header"], optional = true }
jsonwebtoken = { version = "10.3", features = ["aws_lc_rs"], optional = true }
reqwest = { version = "0.13", features = ["json"], optional = true }
[features]
default = [
"tracing",
"database",
"health-checks",
"swagger",
"otel",
"dapr",
"auth",
]
tracing = ["dep:tracing", "dep:tracing-subscriber"]
database = ["dep:sea-orm", "dep:sea-orm-migration"]
auth = ["dep:async-trait", "dep:axum-extra", "dep:jsonwebtoken", "dep:reqwest"]
dapr = ["dep:dapr", "dep:tonic"]
health-checks = []
swagger = ["dep:utoipa", "dep:utoipa-axum", "dep:utoipa-swagger-ui"]
redoc = ["dep:utoipa", "dep:utoipa-axum", "dep:utoipa-redoc"]
rapidoc = ["dep:utoipa", "dep:utoipa-axum", "dep:utoipa-rapidoc"]
scalar = ["dep:utoipa", "dep:utoipa-axum", "dep:utoipa-scalar"]
otel = [
"dep:axum-otel",
"dep:axum-otel-metrics",
"dep:opentelemetry",
"dep:opentelemetry-appender-log",
"dep:opentelemetry-http",
"dep:opentelemetry-otlp",
"dep:opentelemetry-semantic-conventions",
"dep:opentelemetry_sdk",
"dep:tower-http",
"dep:tracing",
"dep:tracing-opentelemetry",
]