cf-modkit 0.2.8

Core ModKit library
Documentation
[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]
# Enable the runner and the runtime integration by default.
default = ["otel", "db"]
coverage_nightly = []

# Database integration (modkit-db, migrations, DbManager/DbHandle in contexts/runtime)
db = ["dep:modkit-db", "dep:sea-orm-migration"]

# OpenTelemetry support for distributed tracing
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]
# Project-local crates
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"] }

# Core deps
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 }

# Router/types used in contracts and runtime
axum = { workspace = true }
http = { workspace = true }

# OpenAPI/serde
utoipa = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde-saphyr = { workspace = true, optional = true }
schemars = { workspace = true, features = ["derive"] }

# GTS support
gts = { workspace = true }
gts-macros = { workspace = true }
zip = { version = "2.3", default-features = false, features = ["deflate"] }

# Performance / lock-free structures
parking_lot = { workspace = true }
dashmap = { workspace = true }
arc-swap = { workspace = true }
thiserror = { workspace = true }
uuid = { workspace = true, features = ["v7"] }
urlencoding = { workspace = true }

# OpenTelemetry tracing support (optional) - full implementation
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 }

# gRPC support only for otel (optional)
tonic = { workspace = true, optional = true }

# Unix-specific dependencies for graceful process termination
[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"] }