swc_ecma_preset_env/corejs2/
data.rs1use 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}