[package]
name = "opys-runtime"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository.workspace = true
homepage.workspace = true
description = "opys install + launch executor. Consumes a frozen Manifest."

[dependencies]
opys-core = { path = "../opys-core", version = "0.1.17" }
opys-mojang-rules = { path = "../opys-mojang-rules", version = "0.1.17" }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
regex = { workspace = true }
indexmap = { version = "2", features = ["serde"] }

# Async runtime
tokio = { version = "1", features = [
    "fs", "io-util", "macros", "process", "rt", "rt-multi-thread",
    "sync", "time",
] }
tokio-util = "0.7"  # CancellationToken for cooperative install cancellation
futures = "0.3"

# HTTP
reqwest = { version = "0.12", default-features = false, features = [
    "rustls-tls", "stream", "http2",
] }
bytes = "1"
rand = "0.8"

# Archives + hashing
tar = "0.4"
zip = { version = "2", default-features = false, features = ["deflate"] }
flate2 = "1"
sha1 = "0.10"
sha2 = "0.10"
md-5 = "0.10"
hex = "0.4"
base64 = "0.22"

[dev-dependencies]
tempfile = "3"
