[package]
name = "cf-modkit"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
rust-version.workspace = true
description = "Core ModKit library"
readme = "README.md"
keywords = ["cyberfabric", "cyberfabric-modkit"]
categories = ["development-tools"]
[lib]
name = "modkit"
[lints]
workspace = true
[features]
default = ["otel", "db"]
coverage_nightly = []
db = ["dep:modkit-db", "dep:sea-orm-migration"]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:tracing-opentelemetry",
"dep:tracing-subscriber",
"dep:opentelemetry-otlp",
"dep:tonic",
]
bootstrap = [
"db",
"dep:serde-saphyr",
"cf-system-sdks/directory_grpc",
"dep:tracing-appender",
"dep:file-rotate",
"dep:tracing-log",
"dep:chrono",
"dep:regex",
"dep:url",
"dep:dsn",
]
[dependencies]
modkit-macros = { workspace = true }
modkit-errors = { workspace = true, features = ["utoipa", "axum"] }
modkit-db = { workspace = true, optional = true }
sea-orm-migration = { workspace = true, optional = true }
modkit-odata = { workspace = true, features = ["with-odata-params"] }
modkit-sdk = { workspace = true }
cf-system-sdks = { workspace = true, features = ["directory"] }
anyhow = { workspace = true }
async-trait = { workspace = true }
inventory = { workspace = true }
tracing = { workspace = true }
figment = { workspace = true }
file-rotate = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
url = { workspace = true, optional = true }
dsn = { workspace = true, optional = true }
regex = { workspace = true, optional = true }
tokio = { workspace = true }
tokio-util = { workspace = true }
tokio-stream = { workspace = true }
futures-core = { workspace = true }
futures-util = { workspace = true }
axum = { workspace = true }
http = { workspace = true }
utoipa = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde-saphyr = { workspace = true, optional = true }
schemars = { workspace = true, features = ["derive"] }
gts = { workspace = true }
gts-macros = { workspace = true }
zip = { version = "2.3", default-features = false, features = ["deflate"] }
parking_lot = { workspace = true }
dashmap = { workspace = true }
arc-swap = { workspace = true }
thiserror = { workspace = true }
uuid = { workspace = true, features = ["v7"] }
urlencoding = { workspace = true }
opentelemetry = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
tracing-opentelemetry = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, optional = true }
tracing-log = { workspace = true, optional = true }
tracing-appender = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
tonic = { workspace = true, optional = true }
[target.'cfg(unix)'.dependencies]
nix = { version = "0.29", default-features = false, features = ["signal"] }
[build-dependencies]
zip = { version = "2.3", default-features = false, features = ["deflate"] }
[dev-dependencies]
tower = { workspace = true }
trybuild = { workspace = true }
httpmock = { workspace = true }
tempfile = { workspace = true }
temp-env = { workspace = true }
modkit-db = { workspace = true, features = ["sqlite"] }