[package]
edition = "2024"
rust-version = "1.92"
name = "shrike"
version = "0.1.1"
authors = ["Jim Calabro <jamesrcalabro@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "AT Protocol library for Rust"
homepage = "https://github.com/jcalabro/shrike"
documentation = "https://docs.rs/shrike"
readme = "README.md"
keywords = [
"atproto",
"bluesky",
"at-protocol",
]
categories = [
"api-bindings",
"network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/jcalabro/shrike"
resolver = "2"
[features]
api = [
"syntax",
"cbor",
"xrpc",
]
backfill = [
"syntax",
"sync",
"xrpc",
"dep:tokio",
"dep:tokio-util",
"dep:rand",
"dep:futures",
]
car = ["cbor"]
cbor = [
"dep:simdutf8",
"dep:bumpalo",
]
crypto = [
"dep:p256",
"dep:k256",
"dep:bs58",
"dep:rand_core",
"dep:zeroize",
]
default = [
"syntax",
"cbor",
"crypto",
"mst",
"repo",
"car",
]
full = [
"syntax",
"cbor",
"crypto",
"mst",
"repo",
"car",
"lexicon",
"xrpc",
"xrpc-server",
"identity",
"streaming",
"sync",
"backfill",
"labeling",
"oauth",
"api",
]
identity = [
"syntax",
"crypto",
"dep:reqwest",
"dep:tokio",
]
labeling = [
"syntax",
"cbor",
"crypto",
]
lexicon = ["syntax"]
mst = ["cbor"]
oauth = [
"syntax",
"crypto",
"identity",
"dep:reqwest",
"dep:tokio",
"dep:url",
"dep:rand",
"dep:async-trait",
]
repo = [
"syntax",
"cbor",
"crypto",
"mst",
]
streaming = [
"syntax",
"cbor",
"car",
"dep:tokio",
"dep:tokio-tungstenite",
"dep:futures",
"dep:url",
"dep:rand",
]
sync = [
"syntax",
"cbor",
"crypto",
"mst",
"repo",
"car",
"identity",
"xrpc",
"dep:tokio",
]
syntax = []
xrpc = [
"syntax",
"dep:reqwest",
"dep:tokio",
]
xrpc-server = [
"syntax",
"dep:tokio",
"dep:axum",
"dep:http",
]
[lib]
name = "shrike"
path = "src/lib.rs"
[[test]]
name = "api_cbor_roundtrip"
path = "tests/api_cbor_roundtrip.rs"
[[test]]
name = "cbor_property_tests"
path = "tests/cbor_property_tests.rs"
[[test]]
name = "mst_property_tests"
path = "tests/mst_property_tests.rs"
[[test]]
name = "oauth_integration"
path = "tests/oauth_integration.rs"
[[bench]]
name = "car_benchmarks"
path = "benches/car_benchmarks.rs"
harness = false
required-features = ["car"]
[[bench]]
name = "cbor_benchmarks"
path = "benches/cbor_benchmarks.rs"
harness = false
required-features = ["cbor"]
[[bench]]
name = "mst_benchmarks"
path = "benches/mst_benchmarks.rs"
harness = false
required-features = ["mst"]
[[bench]]
name = "repo_benchmarks"
path = "benches/repo_benchmarks.rs"
harness = false
required-features = ["repo"]
[dependencies.async-trait]
version = "0.1"
optional = true
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.bs58]
version = "0.5"
optional = true
[dependencies.bumpalo]
version = "3"
optional = true
[dependencies.data-encoding]
version = "2"
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.http]
version = "1"
optional = true
[dependencies.k256]
version = "0.13"
features = ["ecdsa"]
optional = true
[dependencies.p256]
version = "0.13"
features = ["ecdsa"]
optional = true
[dependencies.rand]
version = "0.9"
optional = true
[dependencies.rand_core]
version = "0.6"
features = ["getrandom"]
optional = true
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"stream",
]
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha2]
version = "0.10"
[dependencies.simdutf8]
version = "0.1"
optional = true
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = ["full"]
optional = true
[dependencies.tokio-tungstenite]
version = "0.26"
features = ["native-tls"]
optional = true
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
optional = true
[dependencies.url]
version = "2"
optional = true
[dependencies.zeroize]
version = "1"
optional = true
[dev-dependencies.axum]
version = "0.8"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.data-encoding]
version = "2"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.reqwest]
version = "0.12"
features = [
"json",
"stream",
]
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.sha2]
version = "0.10"
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"full",
"test-util",
]
[dev-dependencies.tower]
version = "0.5"
[dev-dependencies.url]
version = "2"
[lints.clippy]
expect_used = "deny"
panic = "deny"
unreachable = "deny"
unwrap_used = "deny"
[lints.rust]
unsafe_code = "deny"