server-less 0.6.0

Composable derive macros for common Rust patterns
Documentation
[package]
name = "server-less"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Composable derive macros for common Rust patterns"
readme = "README.md"
homepage.workspace = true
keywords.workspace = true
categories.workspace = true

[dependencies]
server-less-core = { workspace = true }
server-less-macros = { workspace = true }
server-less-openapi = { workspace = true, optional = true }

# Re-export common dependencies users will need
serde = { version = "1", features = ["derive"] }
serde_json = "1"

# Optional dependencies for generated code
[dependencies.axum]
version = "0.8"
features = ["ws"]
optional = true

[dependencies.clap]
version = "4"
optional = true

[dependencies.tokio]
version = "1"
features = []
optional = true

[dependencies.futures]
version = "0.3"
optional = true

[dependencies.async-graphql]
version = "7"
optional = true

[dependencies.async-graphql-axum]
version = "7"
optional = true

[dependencies.clap_complete]
version = "4"
optional = true

[dependencies.clap_mangen]
version = "0.2"
optional = true

[features]
default = ["full"]

# Runtime protocols (require external deps)
mcp = ["server-less-macros/mcp", "server-less-core/mcp"]
http = ["server-less-macros/http", "server-less-core/http", "axum", "server-less-openapi", "dep:tokio", "tokio/net"]
cli = ["server-less-macros/cli", "server-less-core/cli", "clap", "dep:tokio", "tokio/rt-multi-thread"]
ws = ["server-less-macros/ws", "server-less-core/ws", "axum", "futures", "server-less-openapi"]
jsonrpc = ["server-less-macros/jsonrpc", "server-less-core/jsonrpc", "axum", "server-less-openapi"]
graphql = ["server-less-macros/graphql", "async-graphql", "async-graphql-axum", "axum", "server-less-openapi"]

# Schema generators (no runtime deps, just string generation)
grpc = ["server-less-macros/grpc"]
capnp = ["server-less-macros/capnp"]
thrift = ["server-less-macros/thrift"]
connect = ["server-less-macros/connect"]
smithy = ["server-less-macros/smithy"]

# Specification generators (no runtime deps)
openapi = ["server-less-macros/openapi", "server-less-openapi"]  # Standalone OpenAPI (no axum)
openrpc = ["server-less-macros/openrpc"]
asyncapi = ["server-less-macros/asyncapi"]
jsonschema = ["server-less-macros/jsonschema", "server-less-core/jsonschema"]

# Documentation generators (no runtime deps)
markdown = ["server-less-macros/markdown"]

# Config management (toml file loading, env vars, #[derive(Config)])
config = ["server-less-macros/config", "server-less-core/config"]

# Standalone health-check endpoint (#[derive(HealthCheck)]); implies http (axum)
health = ["server-less-macros/health", "http"]

# Shell completions + man page for #[cli] (clap_complete / clap_mangen); implies cli
completions = ["server-less-macros/completions", "cli", "dep:clap_complete", "dep:clap_mangen"]

# All features
full = [
    "mcp", "http", "openapi", "cli", "ws", "graphql", "jsonrpc",
    "grpc", "capnp", "thrift", "connect", "smithy",
    "openrpc", "asyncapi", "jsonschema",
    "markdown", "config", "health", "completions"
]

[dev-dependencies]
tokio = { version = "1", features = ["full"] }
trybuild = "1"
axum = { version = "0.8", features = ["ws"] }
tower = { version = "0.5", features = ["util"] }
clap = "4"
futures = "0.3"
async-graphql = "7"
async-graphql-axum = "7"
schemars = "1"
tempfile = "3"