[workspace]
members = [
  "node",
  "napi",
  "selectors",
  "c",
  "derive",
  "static-self",
  "static-self-derive",
]

[package]
authors = ["Devon Govett <devongovett@gmail.com>"]
name = "lightningcss"
version = "1.0.0-alpha.72"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
keywords = ["CSS", "minifier", "Parcel"]
repository = "https://github.com/parcel-bundler/lightningcss"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[[bin]]
name = "lightningcss"
path = "src/main.rs"
required-features = ["cli"]

[lib]
name = "lightningcss"
path = "src/lib.rs"
crate-type = ["rlib"]

[features]
default = ["bundler", "nodejs", "sourcemap"]
browserslist = ["browserslist-rs"]
bundler = ["dashmap", "sourcemap", "rayon"]
cli = ["clap", "serde_json", "browserslist", "jemallocator"]
jsonschema = ["schemars", "serde", "parcel_selectors/jsonschema"]
nodejs = ["dep:serde", "dep:serde-content"]
serde = [
  "dep:serde",
  "dep:serde-content",
  "bitflags/serde",
  "smallvec/serde",
  "cssparser/serde",
  "parcel_selectors/serde",
  "into_owned",
]
sourcemap = ["parcel_sourcemap"]
visitor = []
into_owned = [
  "static-self",
  "static-self/smallvec",
  "static-self/indexmap",
  "parcel_selectors/into_owned",
]
substitute_variables = ["visitor", "into_owned"]

[dependencies]
serde = { version = "1.0.228", features = ["derive"], optional = true }
serde-content = { version = "0.1.2", features = ["serde"], optional = true }
cssparser = "0.37.0"
cssparser-color = "0.5.0"
parcel_selectors = { version = "0.28.3", path = "./selectors" }
itertools = "0.10.1"
smallvec = { version = "1.7.0", features = ["union"] }
bitflags = "2.2.1"
parcel_sourcemap = { version = "2.1.1", features = ["json"], optional = true }
data-encoding = "2.3.2"
lazy_static = "1.4.0"
const-str = "1.1.0"
pathdiff = "0.2.1"
ahash = "0.8.7"
pastey = "0.1.0"
indexmap = { version = "2.2.6", features = ["serde"] }
# CLI deps
clap = { version = "3.0.6", features = ["derive"], optional = true }
browserslist-rs = { version = "0.19.0", optional = true }
rayon = { version = "1.5.1", optional = true }
dashmap = { version = "5.0.0", optional = true }
serde_json = { version = "1.0.78", optional = true }
lightningcss-derive = { version = "=1.0.0-alpha.43", path = "./derive" }
schemars = { version = "0.8.19", features = [
  "smallvec",
  "indexmap2",
], optional = true }
static-self = { version = "0.1.2", path = "static-self", optional = true }

[target.'cfg(target_os = "macos")'.dependencies]
jemallocator = { version = "0.3.2", features = [
  "disable_initial_exec_tls",
], optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.3", default-features = false }

[dev-dependencies]
indoc = "1.0.3"
assert_cmd = "2.0"
assert_fs = "1.0"
predicates = "2.1"
serde_json = "1"
pretty_assertions = "1.4.0"
criterion = { package = "codspeed-criterion-compat", version = "4.5.0" }

[[test]]
name = "cli_integration_tests"
path = "tests/cli_integration_tests.rs"
required-features = ["cli"]

[[example]]
name = "custom_at_rule"
required-features = ["visitor"]

[[example]]
name = "serialize"
required-features = ["serde"]

[[bench]]
name = "transform"
harness = false

[profile.release]
lto = true
codegen-units = 1
panic = 'abort'
