[package] name = "server_fn" version = { workspace = true } edition = "2021" authors = ["Greg Johnston", "Ben Wishovich"] license = "MIT" repository = "https://github.com/leptos-rs/leptos" description = "RPC for any web framework." readme = "../README.md" rust-version.workspace = true [dependencies] throw_error = { workspace = true } server_fn_macro_default = { workspace = true } # used for hashing paths in #[server] macro const_format = "0.2" xxhash-rust = { version = "0.8", features = ["const_xxh64"] } # used across multiple features serde = { version = "1", features = ["derive"] } send_wrapper = { version = "0.6", features = ["futures"], optional = true } thiserror = "1" # registration system inventory = { version = "0.3", optional = true } dashmap = "5" once_cell = "1" ## servers # actix actix-web = { version = "4", optional = true } # axum axum = { version = "0.7", optional = true, default-features = false, features = [ "multipart", ] } tower = { version = "0.4", optional = true } tower-layer = { version = "0.3", optional = true } ## input encodings serde_qs = { version = "0.12", optional = true } multer = { version = "3", optional = true } ## output encodings # serde serde_json = "1" serde-lite = { version = "0.5", features = ["derive"], optional = true } futures = "0.3" http = { version = "1" } ciborium = { version = "0.2", optional = true } hyper = { version = "1", optional = true } bytes = "1" http-body-util = { version = "0.1.0", optional = true } rkyv = { version = "0.7", features = [ "validation", "uuid", "strict", ], optional = true } rmp-serde = { version = "1.1", optional = true } # client gloo-net = { version = "0.6", optional = true } js-sys = { version = "0.3", optional = true } wasm-bindgen = { version = "0.2", optional = true } wasm-bindgen-futures = { version = "0.4", optional = true } wasm-streams = { version = "0.4", optional = true } web-sys = { version = "0.3", optional = true, features = [ "console", "ReadableStream", "ReadableStreamDefaultReader", "AbortController", "AbortSignal", ] } # reqwest client reqwest = { version = "0.12", default-features = false, optional = true, features = [ "multipart", "stream", ] } url = "2" pin-project-lite = "0.2.13" [features] default = ["json"] axum-no-default = [ "ssr", "dep:axum", "dep:hyper", "dep:http-body-util", "dep:tower", "dep:tower-layer", ] form-redirects = [] actix = ["ssr", "dep:actix-web", "dep:send_wrapper"] axum = ["axum/default", "axum-no-default"] browser = [ "dep:gloo-net", "dep:js-sys", "dep:send_wrapper", "dep:wasm-bindgen", "dep:web-sys", "dep:wasm-streams", "dep:wasm-bindgen-futures", ] json = [] serde-lite = ["dep:serde-lite"] multipart = ["browser", "dep:multer"] url = ["dep:serde_qs"] cbor = ["dep:ciborium"] rkyv = ["dep:rkyv"] msgpack = ["dep:rmp-serde"] default-tls = ["reqwest?/default-tls"] rustls = ["reqwest?/rustls-tls"] reqwest = ["dep:reqwest"] ssr = ["inventory"] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--generate-link-to-definition"] # disables some feature combos for testing in CI [package.metadata.cargo-all-features] denylist = [ "rustls", "default-tls", "form-redirects", "gloo-net", "js-sys", "wasm-bindgen", "web-sys", "tower", "tower-layer", "send_wrapper", "ciborium", "hyper", "inventory", "rkyv", ] skip_feature_sets = [ [ "actix", "axum", ], [ "browser", "actix", ], [ "browser", "axum", ], [ "browser", "reqwest", ], [ "default-tls", "rustls", ], [ "browser", "ssr", ], [ "axum-no-default", "actix", ], [ "axum-no-default", "browser", ], [ "rkyv", "json", ], [ "rkyv", "cbor", ], [ "rkyv", "url", ], [ "rkyv", "serde-lite", ], [ "url", "json", ], [ "url", "cbor", ], [ "url", "serde-lite", ], ]