[package]
name = "rac-delta"
version = "1.0.2"
edition = "2024"
authors = ["Rubén Cruz <contact@raccreativegames.com>"]
description = "Storage agnostic delta patching implementation of rac-delta protocol for Rust. With streaming support and file reconstruction."
license = "MIT"
readme = "README.md"
repository = "https://github.com/raccreative/rac-delta-rs"
keywords = ["delta", "patching", "protocol", "streaming", "differential"]
categories = ["compression", "filesystem", "network-programming"]

[lib]
path = "src/lib.rs"

[dependencies]
async-trait = "0.1.89"
serde = { version = "1.0.228", features = ["derive"] }
tokio = { version = "1.0", features = ["full"] }
futures = "0.3"
thiserror = "2.0.17"
blake3 = "1.8.3"
regex = "1.11"
async-stream = "0.3.6"
serde_json = "1.0.149"
tokio-util = { version = "0.7.18", features = ["io", "compat"] }

aws-sdk-s3 = { version = "1.119.0", optional = true, features = ["behavior-version-latest"] }
azure_storage_blob = { version = "0.7.0", optional = true }
azure_core = { version = "0.30.1", optional = true }
google-cloud-auth = { version = "1.2.0", optional = true }
bytes = {version = "1.11.0", optional = true }
google-cloud-storage = { version = "1.4.0", features = ["unstable-stream"], optional = true }
reqwest = { version = "0.13.1", features = ["json", "stream"], optional = true }
urlencoding = { version = "2.1", optional = true }
async-ssh2-lite = { version = "0.5", features = ["tokio"], optional = true }

[features]
default = []
s3 = ["aws-sdk-s3"]
azure = ["azure_storage_blob", "azure_core"]
gcs = ["google-cloud-storage", "google-cloud-auth", "bytes"]
http = ["reqwest", "urlencoding"]
url = ["reqwest"]
ssh = ["async-ssh2-lite"]