[package]
name = "cynic"
description = "A code first GraphQL client for Rust"
keywords = ["graphql", "client", "api"]
documentation = "https://docs.rs/cynic"
readme = "../README.md"

authors = { workspace = true }
edition = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
repository = { workspace = true }
version = { workspace = true }
rust-version = { workspace = true }

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[features]
default = []
all = ["http-surf", "http-reqwest", "http-reqwest-blocking", "rkyv"]
http-surf = ["surf", "serde_json"]
http-reqwest = ["reqwest", "serde_json"]
http-reqwest-blocking = ["http-reqwest", "reqwest/blocking", "serde_json"]
rkyv = ["cynic-proc-macros/rkyv"]
directives = ["cynic-proc-macros/directives"]

[dependencies]
cynic-proc-macros = { path = "../cynic-proc-macros", version = "3.13.0" }
ref-cast = "1.0.15"
serde = { version = "1.0.136", features = ["derive"] }
serde_json = { version = "1.0", optional = true }
static_assertions = "1"
thiserror = "1.0.30"

# Surf feature deps
surf = { version = "2.3", default-features = false, optional = true }

# Reqwest feature deps
reqwest = { version = "0.13", optional = true, features = [
    "json",
], default-features = false }

[dev-dependencies]
assert_matches = "1.4"
chrono = { version = "0.4.19", features = ["serde"] }
graphql-parser = "0.4"
insta.workspace = true
maplit = "1.0.2"
mockito = "1.4.0"
rstest.workspace = true
serde_json = { version = "1.0" }
tokio = { version = "1", features = ["macros"] }

# Depend on ourself for tests
cynic = { path = ".", features = ["http-reqwest"] }

[package.metadata.docs.rs]
features = ["all"]
rustdoc-args = ["--cfg", "docsrs"]
