trait-kit 0.2.5

Module Standard Interface and Capability Management Center — A lightweight Rust library that provides a standard interface for module definition and Kit capability management.
Documentation
[package]
name = "trait-kit"
version = "0.2.5"
edition = "2024"
rust-version = "1.85"
authors = ["Kirky.X"]
repository = "https://github.com/Kirky-X/trait-kit.git"
description = "Module Standard Interface and Capability Management Center — A lightweight Rust library that provides a standard interface for module definition and Kit capability management."
keywords = ["module", "trait", "capability", "kit", "interface"]
license = "MIT"
categories = ["rust-patterns", "development-tools"]
readme = "README.md"

[dependencies]
confers = { version = "0.4", default-features = false, optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
thiserror = { version = "2", default-features = false }
icu = { version = "2.2", optional = true }
writeable = { version = "0.6", optional = true }

[dev-dependencies]
serial_test = "3"
static_assertions = "1"
trybuild = "1"
# E2E integration test deps for AsyncKit — Phase 7 (T046). These are
# dev-only (circular dev-dependencies are allowed by Cargo).
# Version-only: cargo fetches from crates.io. [patch.crates-io] below
# redirects trait-kit to local so the e2e tests see a single, unified
# trait-kit (avoids duplicate trait_kit in the dependency graph).
oxcache = { version = "0.3", default-features = false, features = ["kit", "memory", "serialization", "tracing"] }
limiteron = { version = "0.2", default-features = false, features = ["kit"] }
# dbnexus `kit` does not transitively enable a database driver; the e2e test
# uses `sqlite::memory:`, so we explicitly enable `default` (provides sqlite +
# runtime-tokio-rustls + permission + sql-parser + macros + config-env +
# with-time) alongside `kit`. Rule 6 still honored via default-features = false.
dbnexus = { version = "0.3", default-features = false, features = ["default", "kit"] }
sdforge = { version = "0.3", default-features = false, features = ["kit"] }
# inklog gates `integrations::kit` behind `any(feature = "sqlite"/"postgres"/"mysql")`
# (inklog/src/integrations/mod.rs:16). The e2e test pulls `InklogModule` from
# there, so we enable `sqlite` (the lightest backend, mirrors the dbnexus
# `sqlite::memory:` test URL). `default-features = false` per Rule 6 — we
# explicitly opt into `kit` + `sqlite` only, not inklog's default `http`/`cli`.
inklog = { version = "0.1", default-features = false, features = ["kit", "sqlite"] }
tokio = { version = "~1.52", default-features = false, features = ["rt", "rt-multi-thread", "macros"] }

[features]
default = []
# AsyncKit: Send + Sync async capability management (no extra deps, Rust native async).
async = []
# Level 1: basic confers integration (Store + Config trait).
confers = ["dep:confers", "dep:serde"]
# Level 2: module-level config inheritance (ModuleConfig trait + Config re-export).
# confers 0.4 ships macros as a non-optional workspace member, so this level
# is a semantic marker for trait-kit's ModuleConfig surface.
confers-macros = ["confers"]
# Level 3: hot-reload subscription (maps to confers `watch` feature).
hot-reload = ["confers-macros", "confers/watch"]
# Level 4: encrypted config storage (maps to confers `encryption` feature).
encryption = ["hot-reload", "confers/encryption", "dep:serde", "dep:serde_json"]
# ICU4X-backed internationalization: locale-aware number/date/plural/collation.
i18n = ["dep:icu", "dep:writeable"]

[workspace]
resolver = "2"
# integration-app is excluded from workspace members — it has path deps on
# sibling repos (../../oxcache etc.) that only exist in local dev, not CI.
# Build it standalone: cd examples/integration-app && cargo build
members = [".", "examples/trait-kit-example"]
default-members = ["."]

# Dev-deps use version-only (crates.io). This patch redirects trait-kit to
# the local source so e2e tests see a single, unified trait-kit (avoids
# duplicate trait_kit in the dependency graph). Safe for CI: `.` is the
# repo root, which always exists after checkout.
# For local dev with sibling crate changes, uncomment the relevant lines:
[patch.crates-io]
trait-kit = { path = "." }
# oxcache = { path = "../oxcache" }
# limiteron = { path = "../limiteron" }
# dbnexus = { path = "../dbnexus" }
# sdforge = { path = "../sdforge" }
# inklog = { path = "../inklog" }