swc_ecma_preset_env/corejs2/
data.rs

1use crate::util::{PooledStr, SwcFold};
2
3include!(concat!(env!("OUT_DIR"), "/corejs2_data/lib.rs"));
4
5pub struct StaticProperty(&'static [(PooledStr, u32, u32)]);
6
7pub fn builtin_types_get(query: &str) -> Option<impl ExactSizeIterator<Item = &'static str>> {
8    let idx = BUILTIN_TYPES
9        .binary_search_by(|(k, ..)| k.as_str().cmp(query))
10        .ok()?;
11    let (_, start, end) = BUILTIN_TYPES[idx];
12    let iter = LIST_STORE[start as usize..end as usize]
13        .iter()
14        .map(|s| s.as_str());
15    Some(iter)
16}
17
18pub fn instance_properties_get(query: &str) -> Option<impl ExactSizeIterator<Item = &'static str>> {
19    let idx = INSTANCE_KEYS.get(query)?;
20    let (start, end) = INSTANCE_PROPERTIES_VALUES[idx];
21    let iter = LIST_STORE[start as usize..end as usize]
22        .iter()
23        .map(|s| s.as_str());
24    Some(iter)
25}
26
27pub fn static_properties_get(query: &str) -> Option<StaticProperty> {
28    let idx = STATIC_PROPERTIES
29        .binary_search_by(|(k, ..)| k.as_str().cmp(query))
30        .ok()?;
31    let (_, start, end) = STATIC_PROPERTIES[idx];
32    Some(StaticProperty(
33        &STATIC_PROPERTIES_STORE[start as usize..end as usize],
34    ))
35}
36
37impl StaticProperty {
38    pub fn get(&self, query: &str) -> Option<impl ExactSizeIterator<Item = &'static str>> {
39        let &(_, start, end) = self.0.iter().find(|(k, ..)| k.as_str() == query)?;
40        let iter = LIST_STORE[start as usize..end as usize]
41            .iter()
42            .map(|s| s.as_str());
43        Some(iter)
44    }
45}