swc_ecma_preset_env/corejs2/
builtin.rs

1use once_cell::sync::Lazy;
2use rustc_hash::FxHashMap;
3
4use crate::{util::PooledStr, Versions};
5
6include!(concat!(env!("OUT_DIR"), "/corejs2_builtin/lib.rs"));
7
8pub(crate) static BUILTINS: Lazy<FxHashMap<&str, Versions>> = Lazy::new(|| {
9    // Since the `BrowserData` struct is large and has many empty slots,
10    // it is not suitable for generation at compile time.
11
12    FEATURES
13        .iter()
14        .map(|&(feature, start, end)| {
15            let start = start as usize;
16            let end = end as usize;
17            let mut versions = Versions::default();
18            for (browser, version) in &VERSION_STORE[start..end] {
19                let version = version.as_str().parse().unwrap();
20                versions.insert(browser.as_str(), Some(version));
21            }
22            (feature.as_str(), versions)
23        })
24        .collect()
25});