[package]
name = "overseerd-rpc"
description = "The Overseerd native RPC protocol plugin: router, extractors, middleware, transports, and the serve loop, over the protocol-agnostic overseerd-app core."
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true

[features]
default = []
client = ["dep:async-trait", "dep:overseerd-client", "overseerd-rpc-macros/client"]
di-check = [
    "overseerd-app/di-check",
    "overseerd-di/di-check",
    "overseerd-config/di-check",
    "overseerd-transport/di-check",
    "overseerd-rpc-macros/di-check",
]
yaml = ["overseerd-app/yaml", "overseerd-config/yaml"]
watch = ["overseerd-app/watch", "overseerd-config/watch"]
tracing-subscriber = ["overseerd-app/tracing-subscriber"]
# Set by the `overseerd` facade: root the macros' generated plugin types at
# `::overseerd::daemon::*`. Off (the default) keeps them at this standalone crate
# (`::overseerd_rpc::*`), so depending on `overseerd-rpc` directly works.
facade = ["overseerd-rpc-macros/facade"]

[dependencies]
overseerd-app = { workspace = true }
overseerd-rpc-macros = { workspace = true }
overseerd-client = { workspace = true, optional = true }
overseerd-core = { workspace = true }
overseerd-di = { workspace = true }
overseerd-hooks = { workspace = true }
overseerd-config = { workspace = true }
overseerd-transport = { workspace = true, features = ["di"] }
overseerd-dirs = { workspace = true }
arc-swap = { workspace = true }
linkme = { workspace = true }
directories = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
tokio-util = { workspace = true }
tower = { workspace = true }
futures = { workspace = true }
serde = { workspace = true }
postcard = { workspace = true }
tracing = { workspace = true }
thiserror = { workspace = true }
async-trait = { workspace = true, optional = true }
