[package]
name = "shapemaker"
version = "1.2.2"
rust-version = "1.90"
edition = "2024"
include = ["/src"]
license = "AGPL-3.0"
homepage = "https://gwen.works/shapemaker"
repository = "https://github.com/gwennlbh/shapemaker"
authors = ["Gwenn Le Bihan <gwenn.lebihan7@gmail.com>"]
description = "An experimental WASM-capable, generative SVG-based video rendering engine that reacts to MIDI or audio data"

[workspace]
members = [
    "examples/dna-analysis-machine",
    "examples/schedule-hell",
    "examples/specimen",
    "examples/playground",
    "xtask",
]

[lib]
crate-type = ["cdylib", "lib"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[features]
default = ["vst", "video", "video-server"]
vst = [
    "rand/thread_rng",
    "dep:env_logger",
    "dep:nih_plug",
    "dep:ws",
    "dep:tungstenite",
]
web = ["dep:wasm-bindgen", "dep:serde-wasm-bindgen", "dep:web-sys"]
video = [
    "dep:env_logger",
    "dep:vgv",
    "dep:notify-rust",
    "dep:tokio",
    "dep:easing-function",
]
video-server = ["dep:axum"]
serde-wasm-bindgen = ["dep:serde-wasm-bindgen"]
hotpath = ["dep:hotpath", "hotpath/hotpath"]
hotpath-alloc = ["hotpath/hotpath-alloc"]
hotpath-off = ["hotpath/hotpath-off"]

[dependencies]
nih_plug = { git = "https://github.com/robbert-vdh/nih-plug.git", features = [
    "assert_process_allocs",
], optional = true }
anyhow = "1.0.102"
chrono = "0.4.44"
indicatif = "0.18.4"
itertools = "0.14.0"
midly = "0.5.3"
rand = { version = "0.9.2", default-features = false, features = [
    "small_rng",
    "std",
    "std_rng",
] }
serde_cbor = "0.11.2"
serde_json = "1.0.149"
wasm-bindgen = { version = "0.2.114", optional = true }
getrandom = { version = "0.2", features = ["js"] }
web-sys = { version = "0.3.91", optional = true, features = [
    'Document',
    'Element',
    'HtmlElement',
    'Node',
    'Window',
] }
once_cell = "1.21.4"
nanoid = "0.4.0"
console = { version = "0.16.3", features = ["windows-console-colors"] }
backtrace = "0.3.76"
slug = "0.1.6"
roxmltree = "0.21.1"
strum = { version = "0.27.2", features = ["strum_macros"] }
strum_macros = "0.27.2"
tiny-skia = "0.11.4"
resvg = "0.46.0"
measure_time = "0.9.0"
env_logger = { version = "0.11.9", optional = true }
log = "0.4.29"
rayon = "1.11.0"
ws = { version = "0.9.2", optional = true }
toml = "0.9.12"
serde = { version = "1.0.228", features = ["derive"] }
url = "2.5.8"
tungstenite = { version = "0.28.0", optional = true }
axum = { version = "0.8.8", optional = true, features = ["json"] }
vgv = { git = "https://github.com/gwennlbh/vgvf", version = "0.1.0", optional = true }
serde-aux = "4.7.0"
notify-rust = { version = "4.12.0", optional = true }
tokio = { version = "1.50.0", optional = true }
easing-function = { version = "0.1.1", optional = true }
quick-xml = "0.39.2"
num = "0.4.3"
serde-wasm-bindgen = { version = "0.6.5", optional = true }
hotpath = { version = "0.10.1", optional = true }

[dev-dependencies]
insta = "1.46.3"
rust-analyzer = "0.0.1"
