swc_ecma_preset_env/corejs3/
data.rs1use preset_env_base::version::Version;
2
3use crate::util::SwcFold;
4
5pub static POSSIBLE_GLOBAL_OBJECTS: &[&str] = &["global", "globalThis", "self", "window"];
6
7include!(concat!(env!("OUT_DIR"), "/corejs3_data/lib.rs"));
8
9pub fn modules_by_version(query: &str) -> Option<Version> {
10 let idx = DATA_INDEX.get(query)?;
11 Some(VERSIONS[idx as usize])
12}
13
14pub fn esnext_fallback(module: &str) -> Option<&'static str> {
15 let base_name = module.strip_prefix("es.")?;
16 let esnext_name = format!("esnext.{base_name}");
17
18 let esnext_id = ESNEXT_FALLBACK_SET.get(esnext_name.as_str())?;
19 let esnext_module = crate::util::PooledStr(esnext_id).as_str();
20
21 if esnext_module == esnext_name {
22 Some(esnext_module)
23 } else {
24 None
25 }
26}
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn test_esnext_fallback() {
34 let result = esnext_fallback("es.object.group-by");
35 assert_eq!(result, Some("esnext.object.group-by"));
36
37 let result = esnext_fallback("es.nonexistent.module");
38 assert_eq!(result, None);
39
40 let result = esnext_fallback("esnext.object.group-by");
41 assert_eq!(result, None);
42 }
43}