[package]
name = "hashavatar"
version = "1.1.2"
edition = "2024"
rust-version = "1.90"
description = "Stable deterministic procedural avatars in Rust with configurable identity hashing, WebP, optional PNG/JPEG/GIF, and SVG export"
license = "MIT OR Apache-2.0"
repository = "https://github.com/valkyoth/hashavatar"
homepage = "https://github.com/valkyoth/hashavatar"
documentation = "https://docs.rs/hashavatar/latest/hashavatar/"
readme = "README.md"
keywords = ["avatar", "identicon", "procedural", "webp", "svg"]
categories = ["multimedia::images", "graphics"]
exclude = ["Screenshot_*.png", ".github/images/**", "fuzz/**", "target/**"]

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(fuzzing)", "cfg(kani)"] }

[dependencies]
blake3 = { version = "1.8.5", default-features = true, optional = true }
image = { version = "0.25.10", default-features = false, features = ["webp"] }
palette = { version = "0.7.6", default-features = false, features = ["std"] }
rand = { version = "0.10.2", default-features = false, features = ["std", "std_rng"] }
sanitization = { version = "1.2.4", default-features = false, features = ["alloc"] }
sanitization-crypto-interop = { version = "1.2.4", default-features = false, features = ["sha2"] }
serde = { version = "1.0.228", default-features = false, optional = true }
subtle = { version = "2.6.1", default-features = false }
xxhash-rust = { version = "0.8.16", default-features = false, features = ["xxh3"], optional = true }

[dev-dependencies]
roxmltree = "0.21.1"
serde_json = "1.0.150"
sha2 = { version = "0.11.0", default-features = false, features = ["alloc"] }

[features]
default = []
all-formats = ["png", "jpeg", "gif"]
blake3 = ["dep:blake3", "sanitization-crypto-interop/blake3"]
fuzzing = []
gif = ["image/gif"]
jpeg = ["image/jpeg"]
kani = []
png = ["image/png"]
serde = ["dep:serde"]
xxh3 = ["dep:xxhash-rust"]
