[package]
name = "miden-project"
version.workspace = true
description = "Interface for working with Miden projects"
documentation = "https://docs.rs/miden-project"
readme = "README.md"
categories = ["compilers", "no-std"]
keywords = ["project", "miden"]
license.workspace = true
authors.workspace = true
homepage.workspace = true
repository.workspace = true
rust-version.workspace = true
edition.workspace = true

[package.metadata.cargo-shear]
ignored = ["serde_json"]

[features]
default = ["std"]
arbitrary = ["std", "dep:proptest", "dep:proptest-derive", "miden-assembly-syntax/arbitrary"]
resolver = ["std", "miden-package-registry/resolver"]
std = ["miden-assembly-syntax/std", "miden-package-registry/std", "miden-package-registry/resolver", "proptest?/std", "serde?/std", "tempfile/getrandom", "thiserror/std", "toml/std"]
serde = ["dep:serde", "dep:serde-untagged", "miden-assembly-syntax/serde", "miden-core/serde", "miden-package-registry/serde", "toml/serde", "toml/parse", "toml/display"]

[dependencies]
miden-assembly-syntax.workspace = true
miden-core.workspace = true
miden-mast-package.workspace = true
miden-package-registry.workspace = true
proptest = { workspace = true, optional = true }
proptest-derive = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
serde-untagged = { workspace = true, optional = true }
thiserror.workspace = true
toml = { workspace = true, features = ["serde"] }

[dev-dependencies]
miden-core.workspace = true
miden-mast-package = { workspace = true, features = ["arbitrary"] }
miden-test-serde-macros.workspace = true
proptest.workspace = true
serde_json.workspace = true
tempfile.workspace = true
toml = { workspace = true, features = ["std", "serde", "parse"] }

[lints.rust]
# This is needed until this warning appears in stable when this is commented out. Currently, it
# appears only on nightly, as a side effect of code generated by miette. If we use
# `#[expect(unused_assignments)] in those modules, we get warnings on stable, but not on nightly.
# If we don't do that, we get no warnings on stable, but we do on nightly. Rather than mess about
# with build scripts and such, we just disable this warning for now, as it is essentially useless
# until we get the same behavior on stable and nightly
unused_assignments = "allow"
