[package]
name = "superui_boa_engine"
version.workspace = true
edition = "2024"
rust-version = "1.88.0"
authors = ["boa-dev"]
description = "Fork of boa_engine (boa 0.21.1) with relaxed icu_normalizer pin for Bevy 0.19 / Parley / icu 2.1 compatibility. Upstream: https://github.com/boa-dev/boa"
readme = "README.md"
keywords = [
"javascript",
"js",
"compiler",
"lexer",
"parser",
]
categories = [
"parser-implementations",
"compilers",
]
license = "Unlicense OR MIT"
repository = "https://github.com/boa-dev/boa"
[package.metadata.docs.rs]
all-features = true
[features]
annex-b = [
"boa_ast/annex-b",
"boa_parser/annex-b",
]
default = [
"float16",
"xsum",
]
deser = [
"boa_interner/serde",
"boa_ast/serde",
]
either = [
"dep:either",
"boa_gc/either",
]
embedded_lz4 = [
"boa_macros/embedded_lz4",
"lz4_flex",
]
experimental = ["temporal"]
float16 = ["dep:float16"]
flowgraph = []
fuzz = [
"boa_ast/arbitrary",
"boa_interner/arbitrary",
]
intl = []
intl_bundled = []
js = [
"dep:web-time",
"dep:getrandom",
"getrandom/wasm_js",
"time/wasm-bindgen",
]
jsvalue-enum = []
native-backtrace = []
temporal = [
"dep:temporal_rs",
"dep:iana-time-zone",
"dep:timezone_provider",
"timezone_provider/tzif",
]
trace = ["js"]
xsum = ["dep:xsum"]
[lib]
name = "boa_engine"
crate-type = [
"cdylib",
"lib",
]
path = "src/lib.rs"
bench = false
[[test]]
name = "gcd"
path = "tests/gcd.rs"
[[test]]
name = "imports"
path = "tests/imports.rs"
[[test]]
name = "macros"
path = "tests/macros.rs"
[[test]]
name = "module"
path = "tests/module.rs"
[[bench]]
name = "full"
path = "benches/full.rs"
harness = false
[dependencies]
aligned-vec = "0.6.4"
arrayvec = "0.7.6"
bitflags = "2.9.3"
boa_ast = "~0.21.1"
boa_gc = { version = "~0.21.0", features = ["thin-vec", "boa_string"] }
boa_interner = "~0.21.1"
boa_macros = "~0.21.1"
boa_parser = { package = "superui_boa_parser", version = "0.3.0", path = "../superui_boa_parser" }
boa_string = "~0.21.1"
bytemuck = { version = "1.24.0", features = ["derive"], default-features = false }
cfg-if = "1.0.1"
cow-utils = "0.1.3"
dashmap = "6.1.0"
dynify = "0.1.2"
either = { version = "1.15.0", optional = true }
fast-float2 = "0.2.3"
fixed_decimal = { version = "0.7.0", features = ["ryu", "experimental"], optional = true }
float16 = { version = "0.1", optional = true }
futures-channel = "0.3.31"
futures-concurrency = "7.6.3"
futures-lite = "2.6.1"
hashbrown = "0.16.0"
iana-time-zone = { version = "0.1.64", optional = true }
icu_normalizer = { version = ">=2.0.0, <3", features = ["compiled_data", "utf16_iter"], default-features = false }
indexmap = { version = "2.11.4", features = ["std"], default-features = false }
intrusive-collections = "0.9.7"
itertools = { version = "0.14.0", default-features = false }
lz4_flex = { version = "0.11.5", optional = true }
num-bigint = { version = "0.4.6", features = ["serde"] }
num-integer = "0.1.46"
num-traits = "0.2.19"
num_enum = "0.7.4"
paste = "1.0"
portable-atomic = "1.11.0"
rand = "0.9.2"
regress = { version = "0.10.4", features = ["utf16"] }
rustc-hash = { version = "2.1.1", features = ["std"], default-features = false }
ryu-js = "1.0.2"
serde = { version = "1.0.219", features = ["derive", "rc"] }
serde_json = "1.0.145"
small_btree = "~0.1.0"
static_assertions = "1.1.0"
sys-locale = { version = "0.3.2", optional = true }
tag_ptr = "~0.1.0"
tap = "1.0.1"
temporal_rs = { version = "0.1.0", optional = true, default-features = false }
thin-vec = "0.2.14"
thiserror = { version = "2.0.17", default-features = false }
time = { version = "0.3.44", features = ["local-offset", "large-dates", "parsing", "formatting", "macros"], default-features = false }
timezone_provider = { version = "0.1.0", optional = true }
tinystr = { version = "~0.8.1", optional = true }
writeable = { version = "~0.6.1", optional = true }
xsum = { version = "0.1.5", optional = true }
yoke = { version = "0.8.0", optional = true }
zerofrom = { version = "~0.1.6", optional = true }
[dev-dependencies]
criterion = "0.5.1"
float-cmp = "0.10.0"
indoc = "2.0.6"
test-case = "3.3.1"
textwrap = "0.16.2"
[target.'cfg(all(target_family = "wasm", not(any(target_os = "emscripten", target_os = "wasi"))))'.dependencies]
getrandom = { version = "0.3.4", features = ["wasm_js"], optional = true, default-features = false }
web-time = { version = "1.1.0", optional = true }
[target.x86_64-unknown-linux-gnu.dev-dependencies]
jemallocator = "0.5.4"
[lints.clippy]
dbg_macro = "warn"
print_stderr = "warn"
print_stdout = "warn"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.complexity]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.clippy.perf]
level = "warn"
priority = -1
[lints.clippy.style]
level = "warn"
priority = -1
[lints.clippy.suspicious]
level = "warn"
priority = -1
[lints.rust]
macro_use_extern_crate = "warn"
meta_variable_misuse = "warn"
missing_abi = "warn"
missing_copy_implementations = "warn"
missing_debug_implementations = "warn"
missing_docs = "warn"
non_ascii_idents = "warn"
noop_method_call = "warn"
single_use_lifetimes = "warn"
trivial_casts = "warn"
trivial_numeric_casts = "warn"
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "warn"
unused_crate_dependencies = "warn"
unused_import_braces = "warn"
unused_lifetimes = "warn"
unused_qualifications = "warn"
variant_size_differences = "warn"
warnings = "warn"
[lints.rust.future_incompatible]
level = "warn"
priority = -1
[lints.rust.let_underscore]
level = "warn"
priority = -1
[lints.rust.nonstandard_style]
level = "warn"
priority = -1
[lints.rust.rust_2018_compatibility]
level = "warn"
priority = -1
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1
[lints.rust.rust_2021_compatibility]
level = "warn"
priority = -1
[lints.rust.unused]
level = "warn"
priority = -1
[lints.rustdoc]
bare_urls = "warn"
broken_intra_doc_links = "warn"
invalid_codeblock_attributes = "warn"
invalid_rust_codeblocks = "warn"
missing_crate_level_docs = "warn"
private_doc_tests = "warn"
private_intra_doc_links = "warn"