[package]
name = "lib-infra"
version = "0.1.0"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
chrono = { workspace = true, default-features = false, features = ["clock"] }
bytes = { version = "1.5" }
pin-project = "1.1.3"
futures-core = { version = "0.3" }
tokio = { workspace = true, features = ["sync", "time", "rt"] }
async-trait.workspace = true
md5 = "0.7.0"
anyhow.workspace = true
walkdir = "2.4.0"
tempfile = "3.8.1"
validator = { workspace = true, features = ["derive"] }
tracing.workspace = true
atomic_refcell = "0.1"
allo-isolate = { version = "^0.1", features = ["catch-unwind"], optional = true }
futures = "0.3.31"
cfg-if = "1.0.0"
futures-util = "0.3.30"


aes-gcm = { version = "0.10.2", optional = true }
rand = { version = "0.8.5", optional = true }
pbkdf2 = { version = "0.12.2", optional = true }
hmac = { version = "0.12.1", optional = true }
sha2 = { version = "0.10.7", optional = true }
base64 = { version = "0.22.1" }

[dev-dependencies]
rand = "0.8.5"
futures = "0.3.31"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
zip = { version = "2.2.0", features = ["deflate"] }
brotli = { version = "3.4.0", optional = true }

[features]
compression = ["brotli"]
isolate_flutter = ["allo-isolate"]
encryption = ["aes-gcm", "rand", "pbkdf2", "hmac", "sha2"]