[package]
authors       = ["강동윤 <kdy1997.dev@gmail.com>"]
description   = "Common utilities for the swc project."
documentation = "https://rustdoc.swc.rs/swc_common/"
edition       = { workspace = true }
license       = { workspace = true }
name          = "swc_common"
repository    = { workspace = true }
version       = "8.1.0"

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

[lib]
bench = false

[features]
__plugin         = []
__plugin_mode    = []
__plugin_rt      = []
concurrent       = ["parking_lot"]
debug            = []
default          = []
diagnostic-serde = []
plugin-base      = ["__plugin", "rkyv-impl", "diagnostic-serde"]
plugin-mode      = ["__plugin_mode", "plugin-base"]
plugin-rt        = ["__plugin_rt", "plugin-base"]

plugin_transform_schema_v1    = []
plugin_transform_schema_vtest = []

tty-emitter = ["termcolor"]

__rkyv    = []
rkyv-impl = ["__rkyv", "rkyv", "swc_atoms/rkyv-impl", "bytecheck", "rancor"]

shrink-to-fit = ["dep:shrink-to-fit", "swc_atoms/shrink-to-fit"]


[dependencies]
anyhow                = { workspace = true }
arbitrary             = { workspace = true, features = ["derive"], optional = true }
bytecheck             = { workspace = true, optional = true }
cfg-if                = { workspace = true }
either                = { workspace = true }
new_debug_unreachable = { workspace = true }
num-bigint            = { workspace = true }
once_cell             = { workspace = true }
parking_lot           = { workspace = true, optional = true }
rancor                = { workspace = true, optional = true }
rkyv                  = { workspace = true, optional = true }
rustc-hash            = { workspace = true }
serde                 = { workspace = true, features = ["derive"] }
shrink-to-fit         = { workspace = true, optional = true }
siphasher             = { workspace = true }
sourcemap             = { workspace = true, optional = true }
termcolor             = { workspace = true, optional = true }
tracing               = { workspace = true }
unicode-width         = { workspace = true }
url                   = { workspace = true }

ast_node             = { version = "3.0.0", path = "../ast_node" }
better_scoped_tls    = { version = "1.0.0", path = "../better_scoped_tls" }
from_variant         = { version = "2.0.0", path = "../from_variant" }
swc_allocator        = { version = "4.0.0", path = "../swc_allocator", default-features = false }
swc_atoms            = { version = "5.0.0", path = "../swc_atoms" }
swc_eq_ignore_macros = { version = "1.0.0", path = "../swc_eq_ignore_macros" }
swc_visit            = { version = "2.0.0", path = "../swc_visit" }


[dev-dependencies]
codspeed-criterion-compat = { workspace = true }
criterion                 = { workspace = true }
rayon                     = { workspace = true }
serde_json                = { workspace = true }

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