swc_ecma_preset_env/corejs3/
compat.rs

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