[package]
authors       = ["강동윤 <kdy1997.dev@gmail.com>"]
description   = "Runner for swc plugins. This crate is INTERNAL crate and used by swc itself."
documentation = "https://rustdoc.swc.rs/swc_plugin_runner/"
edition       = { workspace = true }
license       = { workspace = true }
name          = "swc_plugin_runner"
repository    = { workspace = true }
version       = "10.0.0"

[lib]
bench   = false
doctest = false

[features]
default = ["filesystem_cache", "plugin_transform_host_native"]
plugin_transform_host_js = [
  "wasmer/js-default",
  "wasmer-wasix/js-default",
  "wasmer-compiler-cranelift/wasm",
]
plugin_transform_host_native = [
  "wasmer/default",
  "wasmer-wasix/sys",
  "wasmer-wasix/logging",
  "wasmer-wasix/host-fs",
  "wasmer-wasix/sys-poll",
  "wasmer-wasix/sys-thread",
  "wasmer-wasix/host-threads",
  "wasmer-compiler-cranelift/default",
]
plugin_transform_host_native_shared_runtime = ["tokio"]

# Supports a cache allow to store compiled bytecode into filesystem location.
# This feature implies in-memory cache support. This is not supported on wasm32 target.
filesystem_cache              = ["wasmer-cache"]
plugin_transform_schema_v1    = ["swc_common/plugin_transform_schema_v1"]
plugin_transform_schema_vtest = ["swc_common/plugin_transform_schema_vtest"]

# Enable ECMASCript support
ecma = ["swc_ecma_ast/rkyv-impl"]
# Enable CSS support
css = ["swc_css_ast/rkyv-impl"]

__rkyv    = []
rkyv-impl = ["__rkyv", "swc_common/plugin-rt", "swc_plugin_proxy/plugin-rt"]

[build-dependencies]
vergen = { workspace = true, features = ["build", "cargo"] }


[dependencies]
anyhow       = { workspace = true }
enumset      = { workspace = true }
futures      = { workspace = true }
once_cell    = { workspace = true }
parking_lot  = { workspace = true }
rustc-hash   = { workspace = true }
serde        = { workspace = true, features = ["derive"] }
serde_json   = { workspace = true }
tokio        = { workspace = true, optional = true }
tracing      = { workspace = true }
virtual-fs   = { workspace = true }
wasmer       = { workspace = true }
wasmer-wasix = { workspace = true }

swc_atoms = { version = "5.0.0", path = '../swc_atoms' }
swc_common = { version = "8.1.0", path = "../swc_common", features = [
  "concurrent",
] }
swc_css_ast = { version = "8.0.0", path = "../swc_css_ast", optional = true }
swc_ecma_ast = { version = "8.1.1", path = "../swc_ecma_ast", optional = true }
swc_plugin_proxy = { version = "8.0.0", path = "../swc_plugin_proxy" }
swc_transform_common = { version = "2.0.0", path = "../swc_transform_common" }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
wasmer-cache              = { version = "=5.0.5-rc1", optional = true }
wasmer-compiler-cranelift = { version = "=5.0.5-rc1", default-features = false }

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

swc_css_ast = { version = "8.0.0", path = "../swc_css_ast", features = [
  "rkyv-impl",
] }
swc_css_parser = { version = "8.0.0", path = "../swc_css_parser" }
swc_ecma_ast = { version = "8.1.1", path = "../swc_ecma_ast", features = [
  "rkyv-impl",
] }
swc_ecma_loader = { version = "8.0.0", path = "../swc_ecma_loader" }
swc_ecma_parser = { version = "11.0.1", path = "../swc_ecma_parser" }
swc_ecma_visit = { version = "8.0.0", path = "../swc_ecma_visit" }
swc_malloc = { version = "1.2.2", path = "../swc_malloc" }
testing = { version = "9.0.0", path = "../testing" }
tokio = { workspace = true, features = ["rt"] }

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