[package]
name = "typeway"
description = "Type-level web framework for Rust: your API is a type"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "../README.md"
[features]
default = ["server"]
server = ["dep:typeway-server"]
client = ["dep:typeway-client"]
openapi = ["dep:typeway-openapi", "typeway-server?/openapi"]
axum-interop = ["server", "typeway-server/axum-interop"]
grpc = ["server", "typeway-server/grpc", "dep:typeway-grpc"]
protobuf = ["grpc", "typeway-server/protobuf", "dep:typeway-protobuf"]
full = ["server", "client", "openapi", "grpc"]
[dependencies]
typeway-core = { path = "../typeway-core", version = "0.1.0" }
typeway-macros = { path = "../typeway-macros", version = "0.1.0" }
typeway-server = { path = "../typeway-server", version = "0.1.0", optional = true }
typeway-client = { path = "../typeway-client", version = "0.1.0", optional = true }
typeway-grpc = { path = "../typeway-grpc", version = "0.1.0", optional = true }
typeway-protobuf = { path = "../typeway-protobuf", version = "0.1.0", optional = true }
typeway-openapi = { path = "../typeway-openapi", version = "0.1.0", optional = true }
http = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
hyper = { version = "1", features = ["full"] }
hyper-util = { version = "0.1", features = ["tokio", "service"] }
criterion = { version = "0.5", features = ["async_tokio"] }
trybuild = "1"
typeway-server = { path = "../typeway-server" }
typeway-core = { path = "../typeway-core" }
typeway-macros = { path = "../typeway-macros" }
axum = "0.8"
tower = { version = "0.5", features = ["util"] }
bytes = "1"
prost = "0.13"
typeway-protobuf = { path = "../typeway-protobuf" }
tonic = { version = "0.12", features = ["transport"] }
reqwest = { version = "0.12", features = ["json"] }
http-body-util = "0.1"
tower-service = "0.3"
async-trait = "0.1"
tokio-stream = { version = "0.1", features = ["net"] }
[[bench]]
name = "routing"
harness = false
required-features = ["server", "axum-interop"]
[[bench]]
name = "dispatch"
harness = false
required-features = ["server"]
[[bench]]
name = "codec"
harness = false
required-features = ["grpc"]
[[bench]]
name = "grpc_e2e"
harness = false
required-features = ["protobuf"]
[[example]]
name = "hello_world"
required-features = ["server"]
[[example]]
name = "users_api"
required-features = ["server"]
[[example]]
name = "client_server"
required-features = ["full"]
[[example]]
name = "grpc"
required-features = ["grpc"]
[[test]]
name = "compile_errors"
path = "tests/compile_errors.rs"
required-features = ["full"]
[lints]
workspace = true