[package]
edition = "2021"
rust-version = "1.88"
name = "typeway"
version = "0.1.0"
authors = ["Josh Burgess"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Type-level web framework for Rust: your API is a type"
homepage = "https://github.com/joshburgess/typeway"
documentation = "https://docs.rs/typeway"
readme = "README.md"
keywords = [
"web",
"framework",
"type-level",
"openapi",
"grpc",
]
categories = [
"web-programming",
"web-programming::http-server",
"asynchronous",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/joshburgess/typeway"
[features]
axum-interop = [
"server",
"typeway-server/axum-interop",
]
client = ["dep:typeway-client"]
default = ["server"]
full = [
"server",
"client",
"openapi",
"grpc",
]
grpc = [
"server",
"typeway-server/grpc",
"dep:typeway-grpc",
]
openapi = [
"dep:typeway-openapi",
"typeway-server?/openapi",
]
protobuf = [
"grpc",
"typeway-server/protobuf",
"dep:typeway-protobuf",
]
server = ["dep:typeway-server"]
[lib]
name = "typeway"
path = "src/lib.rs"
[[example]]
name = "client_server"
path = "examples/client_server.rs"
required-features = ["full"]
[[example]]
name = "grpc"
path = "examples/grpc.rs"
required-features = ["grpc"]
[[example]]
name = "hello_world"
path = "examples/hello_world.rs"
required-features = ["server"]
[[example]]
name = "users_api"
path = "examples/users_api.rs"
required-features = ["server"]
[[test]]
name = "codec_roundtrip"
path = "tests/codec_roundtrip.rs"
[[test]]
name = "compile_errors"
path = "tests/compile_errors.rs"
required-features = ["full"]
[[bench]]
name = "codec"
path = "benches/codec.rs"
harness = false
required-features = ["grpc"]
[[bench]]
name = "dispatch"
path = "benches/dispatch.rs"
harness = false
required-features = ["server"]
[[bench]]
name = "grpc_e2e"
path = "benches/grpc_e2e.rs"
harness = false
required-features = ["protobuf"]
[[bench]]
name = "routing"
path = "benches/routing.rs"
harness = false
required-features = [
"server",
"axum-interop",
]
[dependencies.http]
version = "1"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.typeway-client]
version = "0.1.0"
optional = true
[dependencies.typeway-core]
version = "0.1.0"
[dependencies.typeway-grpc]
version = "0.1.0"
optional = true
[dependencies.typeway-macros]
version = "0.1.0"
[dependencies.typeway-openapi]
version = "0.1.0"
optional = true
[dependencies.typeway-protobuf]
version = "0.1.0"
optional = true
[dependencies.typeway-server]
version = "0.1.0"
optional = true
[dev-dependencies.async-trait]
version = "0.1"
[dev-dependencies.axum]
version = "0.8"
[dev-dependencies.bytes]
version = "1"
[dev-dependencies.criterion]
version = "0.5"
features = ["async_tokio"]
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.hyper]
version = "1"
features = ["full"]
[dev-dependencies.hyper-util]
version = "0.1"
features = [
"tokio",
"service",
]
[dev-dependencies.prost]
version = "0.13"
[dev-dependencies.reqwest]
version = "0.12"
features = ["json"]
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"test-util",
]
[dev-dependencies.tokio-stream]
version = "0.1"
features = ["net"]
[dev-dependencies.tonic]
version = "0.12"
features = ["transport"]
[dev-dependencies.tower]
version = "0.5"
features = ["util"]
[dev-dependencies.tower-service]
version = "0.3"
[dev-dependencies.trybuild]
version = "1"
[lints.clippy]
upper_case_acronyms = "allow"