Skip to main content

boa_string/
common.rs

1//! List of commonly used strings in Javascript code.
2
3use super::JsString;
4use crate::{JsStr, StaticString};
5use pastey::paste;
6use rustc_hash::FxHashMap;
7use std::sync::LazyLock;
8
9macro_rules! well_known_statics {
10    ( $( $(#[$attr:meta])* ($name:ident, $string:literal) ),+$(,)? ) => {
11        $(
12            paste!{
13                #[doc = "Gets the static `JsString` for `\"" $string "\"`."]
14                pub const $name: JsString = const {
15                    JsString::from_static(Self::find_static_js_string($string))
16                };
17            }
18        )+
19    };
20}
21
22/// List of commonly used strings in Javascript code.
23///
24/// Any strings defined here are used as a static [`JsString`] instead of allocating on the heap.
25#[derive(Debug, Clone, Copy)]
26pub struct StaticJsStrings;
27
28impl StaticJsStrings {
29    // useful to search at compile time a certain string in the array
30    const fn find_static_js_string(candidate: &str) -> &'static StaticString {
31        const fn const_eq(lhs: &[u8], rhs: &[u8]) -> bool {
32            if lhs.len() != rhs.len() {
33                return false;
34            }
35
36            let mut i = 0;
37            while i < lhs.len() {
38                if lhs[i] != rhs[i] {
39                    return false;
40                }
41                i += 1;
42            }
43            true
44        }
45
46        let len = RAW_STATICS.len();
47        let mut i = 0;
48        while i < len {
49            let Some(s) = RAW_STATICS[i].str.as_latin1() else {
50                // All static strings are latin1 encoded
51                unreachable!()
52            };
53            if const_eq(s, candidate.as_bytes()) {
54                return &RAW_STATICS[i];
55            }
56            i += 1;
57        }
58
59        panic!("couldn't find the required string on the common string array");
60    }
61
62    /// Gets the `JsString` corresponding to `string`, or `None` if the string
63    /// doesn't exist inside the static array.
64    #[inline]
65    #[must_use]
66    pub fn get_string(string: &JsStr<'_>) -> Option<JsString> {
67        if string.len() > MAX_STATIC_LENGTH {
68            return None;
69        }
70
71        let static_str = *RAW_STATICS_CACHE.get(string)?;
72        Some(JsString::from_static(static_str))
73    }
74
75    /// Gets the `JsStr` corresponding to `string`, or `None` if the string
76    /// doesn't exist inside the static array.
77    #[inline]
78    #[must_use]
79    pub fn get_js_str(string: &JsStr<'_>) -> Option<JsStr<'static>> {
80        if string.len() > MAX_STATIC_LENGTH {
81            return None;
82        }
83
84        Some(RAW_STATICS_CACHE.get(string)?.str)
85    }
86
87    // Some consts are only used on certain features, which triggers the unused lint.
88    well_known_statics! {
89        (EMPTY_STRING, ""),
90        (LENGTH, "length"),
91        // Symbols
92        (SYMBOL_ASYNC_ITERATOR, "Symbol.asyncIterator"),
93        (SYMBOL_HAS_INSTANCE, "Symbol.hasInstance"),
94        (SYMBOL_IS_CONCAT_SPREADABLE, "Symbol.isConcatSpreadable"),
95        (SYMBOL_ITERATOR, "Symbol.iterator"),
96        (SYMBOL_MATCH, "Symbol.match"),
97        (SYMBOL_MATCH_ALL, "Symbol.matchAll"),
98        (SYMBOL_REPLACE, "Symbol.replace"),
99        (SYMBOL_SEARCH, "Symbol.search"),
100        (SYMBOL_SPECIES, "Symbol.species"),
101        (SYMBOL_SPLIT, "Symbol.split"),
102        (SYMBOL_TO_PRIMITIVE, "Symbol.toPrimitive"),
103        (SYMBOL_TO_STRING_TAG, "Symbol.toStringTag"),
104        (SYMBOL_UNSCOPABLES, "Symbol.unscopables"),
105        (SYMBOL_DISPOSE, "Symbol.dispose"),
106        (SYMBOL_ASYNC_DISPOSE, "Symbol.asyncDispose"),
107        (FN_SYMBOL_ASYNC_ITERATOR, "[Symbol.asyncIterator]"),
108        (FN_SYMBOL_HAS_INSTANCE, "[Symbol.hasInstance]"),
109        (FN_SYMBOL_IS_CONCAT_SPREADABLE, "[Symbol.isConcatSpreadable]"),
110        (FN_SYMBOL_ITERATOR, "[Symbol.iterator]"),
111        (FN_SYMBOL_MATCH, "[Symbol.match]"),
112        (FN_SYMBOL_MATCH_ALL, "[Symbol.matchAll]"),
113        (FN_SYMBOL_REPLACE, "[Symbol.replace]"),
114        (FN_SYMBOL_SEARCH, "[Symbol.search]"),
115        (FN_SYMBOL_SPECIES, "[Symbol.species]"),
116        (FN_SYMBOL_SPLIT, "[Symbol.split]"),
117        (FN_SYMBOL_TO_PRIMITIVE, "[Symbol.toPrimitive]"),
118        (FN_SYMBOL_TO_STRING_TAG, "[Symbol.toStringTag]"),
119        (FN_SYMBOL_UNSCOPABLES, "[Symbol.unscopables]"),
120        (FN_SYMBOL_DISPOSE, "[Symbol.dispose]"),
121        (FN_SYMBOL_ASYNC_DISPOSE, "[Symbol.asyncDispose]"),
122        // Builtins
123        (ARRAY, "Array"),
124        (ARRAY_BUFFER, "ArrayBuffer"),
125        (ITERATOR, "Iterator"),
126        (SHARED_ARRAY_BUFFER, "SharedArrayBuffer"),
127        (ASYNC_FUNCTION, "AsyncFunction"),
128        (ASYNC_GENERATOR, "AsyncGenerator"),
129        (ASYNC_GENERATOR_FUNCTION, "AsyncGeneratorFunction"),
130        (ATOMICS, "Atomics"),
131        (BIG_INT, "BigInt"),
132        (BOOLEAN, "Boolean"),
133        (DATA_VIEW, "DataView"),
134        (DATE, "Date"),
135        (ERROR, "Error"),
136        (AGGREGATE_ERROR, "AggregateError"),
137        (EVAL_ERROR, "EvalError"),
138        (RANGE_ERROR, "RangeError"),
139        (REFERENCE_ERROR, "ReferenceError"),
140        (SYNTAX_ERROR, "SyntaxError"),
141        (TYPE_ERROR, "TypeError"),
142        (URI_ERROR, "URIError"),
143        (ESCAPE, "escape"),
144        (UNESCAPE, "unescape"),
145        (EVAL, "eval"),
146        (FUNCTION, "Function"),
147        (GENERATOR, "Generator"),
148        (GENERATOR_FUNCTION, "GeneratorFunction"),
149        (INTL, "Intl"),
150        (COLLATOR, "Collator"),
151        (LIST_FORMAT, "ListFormat"),
152        (LOCALE, "Locale"),
153        (PLURAL_RULES, "PluralRules"),
154        (SEGMENTER, "Segmenter"),
155        (DATE_TIME_FORMAT, "DateTimeFormat"),
156        (JSON, "JSON"),
157        (MAP, "Map"),
158        (MATH, "Math"),
159        (NUMBER, "Number"),
160        (NUMBER_FORMAT, "NumberFormat"),
161        (IS_FINITE, "isFinite"),
162        (IS_NAN, "isNaN"),
163        (PARSE_INT, "parseInt"),
164        (PARSE_FLOAT, "parseFloat"),
165        (OBJECT, "Object"),
166        (PROMISE, "Promise"),
167        (PROXY, "Proxy"),
168        (REFLECT, "Reflect"),
169        (REG_EXP, "RegExp"),
170        (SET, "Set"),
171        (STRING, "String"),
172        (SYMBOL, "Symbol"),
173        (FINALIZATION_REGISTRY, "FinalizationRegistry"),
174        (TYPED_ARRAY, "TypedArray"),
175        (INT8_ARRAY, "Int8Array"),
176        (UINT8_ARRAY, "Uint8Array"),
177        (UINT8_CLAMPED_ARRAY, "Uint8ClampedArray"),
178        (INT16_ARRAY, "Int16Array"),
179        (UINT16_ARRAY, "Uint16Array"),
180        (INT32_ARRAY, "Int32Array"),
181        (UINT32_ARRAY, "Uint32Array"),
182        (BIG_INT64_ARRAY, "BigInt64Array"),
183        (BIG_UINT64_ARRAY, "BigUint64Array"),
184        #[cfg(feature = "float16")]
185        (FLOAT16_ARRAY, "Float16Array"),
186        (FLOAT32_ARRAY, "Float32Array"),
187        (FLOAT64_ARRAY, "Float64Array"),
188        (ENCODE_URI, "encodeURI"),
189        (ENCODE_URI_COMPONENT, "encodeURIComponent"),
190        (DECODE_URI, "decodeURI"),
191        (DECODE_URI_COMPONENT, "decodeURIComponent"),
192        (WEAK_REF, "WeakRef"),
193        (WEAK_MAP, "WeakMap"),
194        (WEAK_SET, "WeakSet"),
195        (TEMPORAL, "Temporal"),
196        (NOW_TAG, "Temporal.Now"),
197        (INSTANT_TAG, "Temporal.Instant"),
198        (DURATION_TAG, "Temporal.Duration"),
199        (PLAIN_DATE_TAG, "Temporal.PlainDate"),
200        (PLAIN_DATETIME_TAG, "Temporal.PlainDateTime"),
201        (PLAIN_TIME_TAG, "Temporal.PlainTime"),
202        (PLAIN_YM_TAG, "Temporal.PlainYearMonth"),
203        (PLAIN_MD_TAG, "Temporal.PlainMonthDay"),
204        (ZONED_DT_TAG, "Temporal.ZonedDateTime"),
205        (NOW_NAME, "Now"),
206        (INSTANT_NAME, "Instant"),
207        (DURATION_NAME, "Duration"),
208        (PLAIN_DATE_NAME, "PlainDate"),
209        (PLAIN_DATETIME_NAME, "PlainDateTime"),
210        (PLAIN_TIME_NAME, "PlainTime"),
211        (PLAIN_YM_NAME, "PlainYearMonth"),
212        (PLAIN_MD_NAME, "PlainMonthDay"),
213        (ZONED_DT_NAME, "ZonedDateTime"),
214    }
215}
216
217const MAX_STATIC_LENGTH: usize = {
218    let mut max = 0;
219    let mut i = 0;
220    while i < RAW_STATICS.len() {
221        let len = RAW_STATICS[i].str.len();
222        if len > max {
223            max = len;
224        }
225        i += 1;
226    }
227    max
228};
229
230/// Map from a `JsStr` to its corresponding `StaticJsString`.
231static RAW_STATICS_CACHE: LazyLock<FxHashMap<JsStr<'static>, &'static StaticString>> =
232    LazyLock::new(|| RAW_STATICS.iter().map(|s| (s.str, s)).collect());
233
234/// Array of raw static strings that aren't reference counted.
235const RAW_STATICS: &[StaticString] = &[
236    StaticString::new(JsStr::latin1("".as_bytes())),
237    // Well known symbols
238    StaticString::new(JsStr::latin1("Symbol.asyncIterator".as_bytes())),
239    StaticString::new(JsStr::latin1("[Symbol.asyncIterator]".as_bytes())),
240    StaticString::new(JsStr::latin1("Symbol.hasInstance".as_bytes())),
241    StaticString::new(JsStr::latin1("[Symbol.hasInstance]".as_bytes())),
242    StaticString::new(JsStr::latin1("Symbol.isConcatSpreadable".as_bytes())),
243    StaticString::new(JsStr::latin1("[Symbol.isConcatSpreadable]".as_bytes())),
244    StaticString::new(JsStr::latin1("Symbol.iterator".as_bytes())),
245    StaticString::new(JsStr::latin1("[Symbol.iterator]".as_bytes())),
246    StaticString::new(JsStr::latin1("Symbol.match".as_bytes())),
247    StaticString::new(JsStr::latin1("[Symbol.match]".as_bytes())),
248    StaticString::new(JsStr::latin1("Symbol.matchAll".as_bytes())),
249    StaticString::new(JsStr::latin1("[Symbol.matchAll]".as_bytes())),
250    StaticString::new(JsStr::latin1("Symbol.replace".as_bytes())),
251    StaticString::new(JsStr::latin1("[Symbol.replace]".as_bytes())),
252    StaticString::new(JsStr::latin1("Symbol.search".as_bytes())),
253    StaticString::new(JsStr::latin1("[Symbol.search]".as_bytes())),
254    StaticString::new(JsStr::latin1("Symbol.species".as_bytes())),
255    StaticString::new(JsStr::latin1("[Symbol.species]".as_bytes())),
256    StaticString::new(JsStr::latin1("Symbol.split".as_bytes())),
257    StaticString::new(JsStr::latin1("[Symbol.split]".as_bytes())),
258    StaticString::new(JsStr::latin1("Symbol.toPrimitive".as_bytes())),
259    StaticString::new(JsStr::latin1("[Symbol.toPrimitive]".as_bytes())),
260    StaticString::new(JsStr::latin1("Symbol.toStringTag".as_bytes())),
261    StaticString::new(JsStr::latin1("[Symbol.toStringTag]".as_bytes())),
262    StaticString::new(JsStr::latin1("Symbol.unscopables".as_bytes())),
263    StaticString::new(JsStr::latin1("[Symbol.unscopables]".as_bytes())),
264    StaticString::new(JsStr::latin1("Symbol.dispose".as_bytes())),
265    StaticString::new(JsStr::latin1("[Symbol.dispose]".as_bytes())),
266    StaticString::new(JsStr::latin1("Symbol.asyncDispose".as_bytes())),
267    StaticString::new(JsStr::latin1("[Symbol.asyncDispose]".as_bytes())),
268    StaticString::new(JsStr::latin1("get [Symbol.species]".as_bytes())),
269    StaticString::new(JsStr::latin1("get [Symbol.toStringTag]".as_bytes())),
270    // Well known builtins
271    StaticString::new(JsStr::latin1("Array".as_bytes())),
272    StaticString::new(JsStr::latin1("ArrayBuffer".as_bytes())),
273    StaticString::new(JsStr::latin1("Iterator".as_bytes())),
274    StaticString::new(JsStr::latin1("SharedArrayBuffer".as_bytes())),
275    StaticString::new(JsStr::latin1("AsyncFunction".as_bytes())),
276    StaticString::new(JsStr::latin1("AsyncGenerator".as_bytes())),
277    StaticString::new(JsStr::latin1("AsyncGeneratorFunction".as_bytes())),
278    StaticString::new(JsStr::latin1("Atomics".as_bytes())),
279    StaticString::new(JsStr::latin1("BigInt".as_bytes())),
280    StaticString::new(JsStr::latin1("Boolean".as_bytes())),
281    StaticString::new(JsStr::latin1("DataView".as_bytes())),
282    StaticString::new(JsStr::latin1("Date".as_bytes())),
283    StaticString::new(JsStr::latin1("Error".as_bytes())),
284    StaticString::new(JsStr::latin1("AggregateError".as_bytes())),
285    StaticString::new(JsStr::latin1("EvalError".as_bytes())),
286    StaticString::new(JsStr::latin1("RangeError".as_bytes())),
287    StaticString::new(JsStr::latin1("ReferenceError".as_bytes())),
288    StaticString::new(JsStr::latin1("SyntaxError".as_bytes())),
289    StaticString::new(JsStr::latin1("TypeError".as_bytes())),
290    StaticString::new(JsStr::latin1("URIError".as_bytes())),
291    StaticString::new(JsStr::latin1("escape".as_bytes())),
292    StaticString::new(JsStr::latin1("unescape".as_bytes())),
293    StaticString::new(JsStr::latin1("eval".as_bytes())),
294    StaticString::new(JsStr::latin1("Function".as_bytes())),
295    StaticString::new(JsStr::latin1("Generator".as_bytes())),
296    StaticString::new(JsStr::latin1("GeneratorFunction".as_bytes())),
297    StaticString::new(JsStr::latin1("Intl".as_bytes())),
298    StaticString::new(JsStr::latin1("Collator".as_bytes())),
299    StaticString::new(JsStr::latin1("ListFormat".as_bytes())),
300    StaticString::new(JsStr::latin1("Locale".as_bytes())),
301    StaticString::new(JsStr::latin1("PluralRules".as_bytes())),
302    StaticString::new(JsStr::latin1("Segmenter".as_bytes())),
303    StaticString::new(JsStr::latin1("DateTimeFormat".as_bytes())),
304    StaticString::new(JsStr::latin1("JSON".as_bytes())),
305    StaticString::new(JsStr::latin1("Map".as_bytes())),
306    StaticString::new(JsStr::latin1("Math".as_bytes())),
307    StaticString::new(JsStr::latin1("Number".as_bytes())),
308    StaticString::new(JsStr::latin1("NumberFormat".as_bytes())),
309    StaticString::new(JsStr::latin1("isFinite".as_bytes())),
310    StaticString::new(JsStr::latin1("isNaN".as_bytes())),
311    StaticString::new(JsStr::latin1("parseInt".as_bytes())),
312    StaticString::new(JsStr::latin1("parseFloat".as_bytes())),
313    StaticString::new(JsStr::latin1("Object".as_bytes())),
314    StaticString::new(JsStr::latin1("Promise".as_bytes())),
315    StaticString::new(JsStr::latin1("Proxy".as_bytes())),
316    StaticString::new(JsStr::latin1("Reflect".as_bytes())),
317    StaticString::new(JsStr::latin1("RegExp".as_bytes())),
318    StaticString::new(JsStr::latin1("Set".as_bytes())),
319    StaticString::new(JsStr::latin1("String".as_bytes())),
320    StaticString::new(JsStr::latin1("Symbol".as_bytes())),
321    StaticString::new(JsStr::latin1("TypedArray".as_bytes())),
322    StaticString::new(JsStr::latin1("Int8Array".as_bytes())),
323    StaticString::new(JsStr::latin1("Uint8Array".as_bytes())),
324    StaticString::new(JsStr::latin1("Uint8ClampedArray".as_bytes())),
325    StaticString::new(JsStr::latin1("Int16Array".as_bytes())),
326    StaticString::new(JsStr::latin1("Uint16Array".as_bytes())),
327    StaticString::new(JsStr::latin1("Int32Array".as_bytes())),
328    StaticString::new(JsStr::latin1("Uint32Array".as_bytes())),
329    StaticString::new(JsStr::latin1("BigInt64Array".as_bytes())),
330    StaticString::new(JsStr::latin1("BigUint64Array".as_bytes())),
331    StaticString::new(JsStr::latin1("Float16Array".as_bytes())),
332    StaticString::new(JsStr::latin1("Float32Array".as_bytes())),
333    StaticString::new(JsStr::latin1("Float64Array".as_bytes())),
334    StaticString::new(JsStr::latin1("encodeURI".as_bytes())),
335    StaticString::new(JsStr::latin1("encodeURIComponent".as_bytes())),
336    StaticString::new(JsStr::latin1("decodeURI".as_bytes())),
337    StaticString::new(JsStr::latin1("decodeURIComponent".as_bytes())),
338    StaticString::new(JsStr::latin1("WeakRef".as_bytes())),
339    StaticString::new(JsStr::latin1("WeakMap".as_bytes())),
340    StaticString::new(JsStr::latin1("WeakSet".as_bytes())),
341    StaticString::new(JsStr::latin1("FinalizationRegistry".as_bytes())),
342    StaticString::new(JsStr::latin1("Temporal".as_bytes())),
343    StaticString::new(JsStr::latin1("Temporal.Now".as_bytes())),
344    StaticString::new(JsStr::latin1("Temporal.Instant".as_bytes())),
345    StaticString::new(JsStr::latin1("Temporal.Duration".as_bytes())),
346    StaticString::new(JsStr::latin1("Temporal.Calendar".as_bytes())),
347    StaticString::new(JsStr::latin1("Temporal.PlainDate".as_bytes())),
348    StaticString::new(JsStr::latin1("Temporal.PlainDateTime".as_bytes())),
349    StaticString::new(JsStr::latin1("Temporal.PlainMonthDay".as_bytes())),
350    StaticString::new(JsStr::latin1("Temporal.PlainYearMonth".as_bytes())),
351    StaticString::new(JsStr::latin1("Temporal.PlainTime".as_bytes())),
352    StaticString::new(JsStr::latin1("Temporal.TimeZone".as_bytes())),
353    StaticString::new(JsStr::latin1("Temporal.ZonedDateTime".as_bytes())),
354    // Misc
355    StaticString::new(JsStr::latin1(",".as_bytes())),
356    StaticString::new(JsStr::latin1(":".as_bytes())),
357    // Generic use
358    StaticString::new(JsStr::latin1("name".as_bytes())),
359    StaticString::new(JsStr::latin1("length".as_bytes())),
360    StaticString::new(JsStr::latin1("arguments".as_bytes())),
361    StaticString::new(JsStr::latin1("prototype".as_bytes())),
362    StaticString::new(JsStr::latin1("constructor".as_bytes())),
363    StaticString::new(JsStr::latin1("return".as_bytes())),
364    StaticString::new(JsStr::latin1("throw".as_bytes())),
365    StaticString::new(JsStr::latin1("global".as_bytes())),
366    StaticString::new(JsStr::latin1("globalThis".as_bytes())),
367    // typeof
368    StaticString::new(JsStr::latin1("null".as_bytes())),
369    StaticString::new(JsStr::latin1("undefined".as_bytes())),
370    StaticString::new(JsStr::latin1("number".as_bytes())),
371    StaticString::new(JsStr::latin1("string".as_bytes())),
372    StaticString::new(JsStr::latin1("symbol".as_bytes())),
373    StaticString::new(JsStr::latin1("bigint".as_bytes())),
374    StaticString::new(JsStr::latin1("object".as_bytes())),
375    StaticString::new(JsStr::latin1("function".as_bytes())),
376    // Property descriptor
377    StaticString::new(JsStr::latin1("value".as_bytes())),
378    StaticString::new(JsStr::latin1("get".as_bytes())),
379    StaticString::new(JsStr::latin1("set".as_bytes())),
380    StaticString::new(JsStr::latin1("writable".as_bytes())),
381    StaticString::new(JsStr::latin1("enumerable".as_bytes())),
382    StaticString::new(JsStr::latin1("configurable".as_bytes())),
383    // Object object
384    StaticString::new(JsStr::latin1("assign".as_bytes())),
385    StaticString::new(JsStr::latin1("create".as_bytes())),
386    StaticString::new(JsStr::latin1("toString".as_bytes())),
387    StaticString::new(JsStr::latin1("valueOf".as_bytes())),
388    StaticString::new(JsStr::latin1("is".as_bytes())),
389    StaticString::new(JsStr::latin1("seal".as_bytes())),
390    StaticString::new(JsStr::latin1("isSealed".as_bytes())),
391    StaticString::new(JsStr::latin1("freeze".as_bytes())),
392    StaticString::new(JsStr::latin1("isFrozen".as_bytes())),
393    StaticString::new(JsStr::latin1("isExtensible".as_bytes())),
394    StaticString::new(JsStr::latin1("hasOwnProperty".as_bytes())),
395    StaticString::new(JsStr::latin1("isPrototypeOf".as_bytes())),
396    StaticString::new(JsStr::latin1("setPrototypeOf".as_bytes())),
397    StaticString::new(JsStr::latin1("getPrototypeOf".as_bytes())),
398    StaticString::new(JsStr::latin1("defineProperty".as_bytes())),
399    StaticString::new(JsStr::latin1("defineProperties".as_bytes())),
400    StaticString::new(JsStr::latin1("deleteProperty".as_bytes())),
401    StaticString::new(JsStr::latin1("construct".as_bytes())),
402    StaticString::new(JsStr::latin1("hasOwn".as_bytes())),
403    StaticString::new(JsStr::latin1("ownKeys".as_bytes())),
404    StaticString::new(JsStr::latin1("keys".as_bytes())),
405    StaticString::new(JsStr::latin1("values".as_bytes())),
406    StaticString::new(JsStr::latin1("entries".as_bytes())),
407    StaticString::new(JsStr::latin1("fromEntries".as_bytes())),
408    StaticString::new(JsStr::latin1("propertyIsEnumerable".as_bytes())),
409    StaticString::new(JsStr::latin1("preventExtensions".as_bytes())),
410    StaticString::new(JsStr::latin1("getOwnPropertyDescriptor".as_bytes())),
411    StaticString::new(JsStr::latin1("getOwnPropertyDescriptors".as_bytes())),
412    StaticString::new(JsStr::latin1("getOwnPropertyNames".as_bytes())),
413    StaticString::new(JsStr::latin1("getOwnPropertySymbols".as_bytes())),
414    StaticString::new(JsStr::latin1("__defineGetter__".as_bytes())),
415    StaticString::new(JsStr::latin1("__defineSetter__".as_bytes())),
416    StaticString::new(JsStr::latin1("__lookupGetter__".as_bytes())),
417    StaticString::new(JsStr::latin1("__lookupSetter__".as_bytes())),
418    StaticString::new(JsStr::latin1("__proto__".as_bytes())),
419    StaticString::new(JsStr::latin1("get __proto__".as_bytes())),
420    StaticString::new(JsStr::latin1("set __proto__".as_bytes())),
421    // Function object
422    StaticString::new(JsStr::latin1("apply".as_bytes())),
423    StaticString::new(JsStr::latin1("bind".as_bytes())),
424    StaticString::new(JsStr::latin1("call".as_bytes())),
425    StaticString::new(JsStr::latin1("caller".as_bytes())),
426    // Arguments object
427    StaticString::new(JsStr::latin1("callee".as_bytes())),
428    // Array object
429    StaticString::new(JsStr::latin1("at".as_bytes())),
430    StaticString::new(JsStr::latin1("from".as_bytes())),
431    StaticString::new(JsStr::latin1("isArray".as_bytes())),
432    StaticString::new(JsStr::latin1("of".as_bytes())),
433    StaticString::new(JsStr::latin1("copyWithin".as_bytes())),
434    StaticString::new(JsStr::latin1("every".as_bytes())),
435    StaticString::new(JsStr::latin1("fill".as_bytes())),
436    StaticString::new(JsStr::latin1("filter".as_bytes())),
437    StaticString::new(JsStr::latin1("find".as_bytes())),
438    StaticString::new(JsStr::latin1("findIndex".as_bytes())),
439    StaticString::new(JsStr::latin1("findLast".as_bytes())),
440    StaticString::new(JsStr::latin1("findLastIndex".as_bytes())),
441    StaticString::new(JsStr::latin1("flat".as_bytes())),
442    StaticString::new(JsStr::latin1("flatMap".as_bytes())),
443    StaticString::new(JsStr::latin1("forEach".as_bytes())),
444    StaticString::new(JsStr::latin1("includes".as_bytes())),
445    StaticString::new(JsStr::latin1("indexOf".as_bytes())),
446    StaticString::new(JsStr::latin1("join".as_bytes())),
447    StaticString::new(JsStr::latin1("map".as_bytes())),
448    StaticString::new(JsStr::latin1("next".as_bytes())),
449    StaticString::new(JsStr::latin1("reduce".as_bytes())),
450    StaticString::new(JsStr::latin1("reduceRight".as_bytes())),
451    StaticString::new(JsStr::latin1("reverse".as_bytes())),
452    StaticString::new(JsStr::latin1("shift".as_bytes())),
453    StaticString::new(JsStr::latin1("slice".as_bytes())),
454    StaticString::new(JsStr::latin1("splice".as_bytes())),
455    StaticString::new(JsStr::latin1("some".as_bytes())),
456    StaticString::new(JsStr::latin1("sort".as_bytes())),
457    StaticString::new(JsStr::latin1("unshift".as_bytes())),
458    StaticString::new(JsStr::latin1("push".as_bytes())),
459    StaticString::new(JsStr::latin1("pop".as_bytes())),
460    StaticString::new(JsStr::latin1("groupBy".as_bytes())),
461    StaticString::new(JsStr::latin1("toReversed".as_bytes())),
462    StaticString::new(JsStr::latin1("toSorted".as_bytes())),
463    StaticString::new(JsStr::latin1("toSpliced".as_bytes())),
464    StaticString::new(JsStr::latin1("with".as_bytes())),
465    // String object
466    StaticString::new(JsStr::latin1("charAt".as_bytes())),
467    StaticString::new(JsStr::latin1("charCodeAt".as_bytes())),
468    StaticString::new(JsStr::latin1("codePointAt".as_bytes())),
469    StaticString::new(JsStr::latin1("concat".as_bytes())),
470    StaticString::new(JsStr::latin1("endsWith".as_bytes())),
471    StaticString::new(JsStr::latin1("fromCharCode".as_bytes())),
472    StaticString::new(JsStr::latin1("fromCodePoint".as_bytes())),
473    StaticString::new(JsStr::latin1("lastIndexOf".as_bytes())),
474    StaticString::new(JsStr::latin1("match".as_bytes())),
475    StaticString::new(JsStr::latin1("matchAll".as_bytes())),
476    StaticString::new(JsStr::latin1("normalize".as_bytes())),
477    StaticString::new(JsStr::latin1("padEnd".as_bytes())),
478    StaticString::new(JsStr::latin1("padStart".as_bytes())),
479    StaticString::new(JsStr::latin1("raw".as_bytes())),
480    StaticString::new(JsStr::latin1("repeat".as_bytes())),
481    StaticString::new(JsStr::latin1("replace".as_bytes())),
482    StaticString::new(JsStr::latin1("replaceAll".as_bytes())),
483    StaticString::new(JsStr::latin1("search".as_bytes())),
484    StaticString::new(JsStr::latin1("split".as_bytes())),
485    StaticString::new(JsStr::latin1("startsWith".as_bytes())),
486    StaticString::new(JsStr::latin1("substr".as_bytes())),
487    StaticString::new(JsStr::latin1("substring".as_bytes())),
488    StaticString::new(JsStr::latin1("toLocaleString".as_bytes())),
489    StaticString::new(JsStr::latin1("toLowerCase".as_bytes())),
490    StaticString::new(JsStr::latin1("toUpperCase".as_bytes())),
491    StaticString::new(JsStr::latin1("trim".as_bytes())),
492    StaticString::new(JsStr::latin1("trimEnd".as_bytes())),
493    StaticString::new(JsStr::latin1("trimStart".as_bytes())),
494    StaticString::new(JsStr::latin1("isWellFormed".as_bytes())),
495    StaticString::new(JsStr::latin1("localeCompare".as_bytes())),
496    StaticString::new(JsStr::latin1("toWellFormed".as_bytes())),
497    StaticString::new(JsStr::latin1("toLocaleLowerCase".as_bytes())),
498    StaticString::new(JsStr::latin1("toLocaleUpperCase".as_bytes())),
499    StaticString::new(JsStr::latin1("trimLeft".as_bytes())),
500    StaticString::new(JsStr::latin1("trimRight".as_bytes())),
501    StaticString::new(JsStr::latin1("anchor".as_bytes())),
502    StaticString::new(JsStr::latin1("big".as_bytes())),
503    StaticString::new(JsStr::latin1("blink".as_bytes())),
504    StaticString::new(JsStr::latin1("bold".as_bytes())),
505    StaticString::new(JsStr::latin1("fixed".as_bytes())),
506    StaticString::new(JsStr::latin1("fontcolor".as_bytes())),
507    StaticString::new(JsStr::latin1("fontsize".as_bytes())),
508    StaticString::new(JsStr::latin1("italics".as_bytes())),
509    StaticString::new(JsStr::latin1("link".as_bytes())),
510    StaticString::new(JsStr::latin1("small".as_bytes())),
511    StaticString::new(JsStr::latin1("strike".as_bytes())),
512    StaticString::new(JsStr::latin1("sub".as_bytes())),
513    StaticString::new(JsStr::latin1("sup".as_bytes())),
514    // Number object
515    StaticString::new(JsStr::latin1("Infinity".as_bytes())),
516    StaticString::new(JsStr::latin1("NaN".as_bytes())),
517    StaticString::new(JsStr::latin1("EPSILON".as_bytes())),
518    StaticString::new(JsStr::latin1("MAX_SAFE_INTEGER".as_bytes())),
519    StaticString::new(JsStr::latin1("MIN_SAFE_INTEGER".as_bytes())),
520    StaticString::new(JsStr::latin1("MAX_VALUE".as_bytes())),
521    StaticString::new(JsStr::latin1("MIN_VALUE".as_bytes())),
522    StaticString::new(JsStr::latin1("NEGATIVE_INFINITY".as_bytes())),
523    StaticString::new(JsStr::latin1("POSITIVE_INFINITY".as_bytes())),
524    StaticString::new(JsStr::latin1("isSafeInteger".as_bytes())),
525    StaticString::new(JsStr::latin1("isInteger".as_bytes())),
526    StaticString::new(JsStr::latin1("toExponential".as_bytes())),
527    StaticString::new(JsStr::latin1("toFixed".as_bytes())),
528    StaticString::new(JsStr::latin1("toPrecision".as_bytes())),
529    // BigInt object
530    StaticString::new(JsStr::latin1("asIntN".as_bytes())),
531    StaticString::new(JsStr::latin1("asUintN".as_bytes())),
532    // RegExp object
533    StaticString::new(JsStr::latin1("exec".as_bytes())),
534    StaticString::new(JsStr::latin1("test".as_bytes())),
535    StaticString::new(JsStr::latin1("compile".as_bytes())),
536    StaticString::new(JsStr::latin1("flags".as_bytes())),
537    StaticString::new(JsStr::latin1("index".as_bytes())),
538    StaticString::new(JsStr::latin1("lastIndex".as_bytes())),
539    StaticString::new(JsStr::latin1("hasIndices".as_bytes())),
540    StaticString::new(JsStr::latin1("ignoreCase".as_bytes())),
541    StaticString::new(JsStr::latin1("multiline".as_bytes())),
542    StaticString::new(JsStr::latin1("dotAll".as_bytes())),
543    StaticString::new(JsStr::latin1("unicode".as_bytes())),
544    StaticString::new(JsStr::latin1("sticky".as_bytes())),
545    StaticString::new(JsStr::latin1("source".as_bytes())),
546    StaticString::new(JsStr::latin1("get hasIndices".as_bytes())),
547    StaticString::new(JsStr::latin1("get global".as_bytes())),
548    StaticString::new(JsStr::latin1("get ignoreCase".as_bytes())),
549    StaticString::new(JsStr::latin1("get multiline".as_bytes())),
550    StaticString::new(JsStr::latin1("get dotAll".as_bytes())),
551    StaticString::new(JsStr::latin1("get unicode".as_bytes())),
552    StaticString::new(JsStr::latin1("get sticky".as_bytes())),
553    StaticString::new(JsStr::latin1("get flags".as_bytes())),
554    StaticString::new(JsStr::latin1("get source".as_bytes())),
555    // Symbol object
556    StaticString::new(JsStr::latin1("for".as_bytes())),
557    StaticString::new(JsStr::latin1("keyFor".as_bytes())),
558    StaticString::new(JsStr::latin1("description".as_bytes())),
559    StaticString::new(JsStr::latin1("asyncIterator".as_bytes())),
560    StaticString::new(JsStr::latin1("hasInstance".as_bytes())),
561    StaticString::new(JsStr::latin1("species".as_bytes())),
562    StaticString::new(JsStr::latin1("unscopables".as_bytes())),
563    StaticString::new(JsStr::latin1("iterator".as_bytes())),
564    StaticString::new(JsStr::latin1("toStringTag".as_bytes())),
565    StaticString::new(JsStr::latin1("toPrimitive".as_bytes())),
566    StaticString::new(JsStr::latin1("isConcatSpreadable".as_bytes())),
567    StaticString::new(JsStr::latin1("get description".as_bytes())),
568    // Map object
569    StaticString::new(JsStr::latin1("clear".as_bytes())),
570    StaticString::new(JsStr::latin1("delete".as_bytes())),
571    StaticString::new(JsStr::latin1("has".as_bytes())),
572    StaticString::new(JsStr::latin1("size".as_bytes())),
573    // Set object
574    StaticString::new(JsStr::latin1("add".as_bytes())),
575    // Reflect object
576    // Proxy object
577    StaticString::new(JsStr::latin1("revocable".as_bytes())),
578    // Error objects
579    StaticString::new(JsStr::latin1("message".as_bytes())),
580    // Date object
581    StaticString::new(JsStr::latin1("toJSON".as_bytes())),
582    StaticString::new(JsStr::latin1("getDate".as_bytes())),
583    StaticString::new(JsStr::latin1("getDay".as_bytes())),
584    StaticString::new(JsStr::latin1("getFullYear".as_bytes())),
585    StaticString::new(JsStr::latin1("getHours".as_bytes())),
586    StaticString::new(JsStr::latin1("getMilliseconds".as_bytes())),
587    StaticString::new(JsStr::latin1("getMinutes".as_bytes())),
588    StaticString::new(JsStr::latin1("getMonth".as_bytes())),
589    StaticString::new(JsStr::latin1("getSeconds".as_bytes())),
590    StaticString::new(JsStr::latin1("getTime".as_bytes())),
591    StaticString::new(JsStr::latin1("getYear".as_bytes())),
592    StaticString::new(JsStr::latin1("getUTCDate".as_bytes())),
593    StaticString::new(JsStr::latin1("getUTCDay".as_bytes())),
594    StaticString::new(JsStr::latin1("getUTCFullYear".as_bytes())),
595    StaticString::new(JsStr::latin1("getUTCHours".as_bytes())),
596    StaticString::new(JsStr::latin1("getUTCMinutes".as_bytes())),
597    StaticString::new(JsStr::latin1("getUTCMonth".as_bytes())),
598    StaticString::new(JsStr::latin1("getUTCSeconds".as_bytes())),
599    StaticString::new(JsStr::latin1("setDate".as_bytes())),
600    StaticString::new(JsStr::latin1("setFullYear".as_bytes())),
601    StaticString::new(JsStr::latin1("setHours".as_bytes())),
602    StaticString::new(JsStr::latin1("setMilliseconds".as_bytes())),
603    StaticString::new(JsStr::latin1("setMinutes".as_bytes())),
604    StaticString::new(JsStr::latin1("setMonth".as_bytes())),
605    StaticString::new(JsStr::latin1("setSeconds".as_bytes())),
606    StaticString::new(JsStr::latin1("setYear".as_bytes())),
607    StaticString::new(JsStr::latin1("setTime".as_bytes())),
608    StaticString::new(JsStr::latin1("setUTCDate".as_bytes())),
609    StaticString::new(JsStr::latin1("setUTCFullYear".as_bytes())),
610    StaticString::new(JsStr::latin1("setUTCHours".as_bytes())),
611    StaticString::new(JsStr::latin1("setUTCMinutes".as_bytes())),
612    StaticString::new(JsStr::latin1("setUTCMonth".as_bytes())),
613    StaticString::new(JsStr::latin1("setUTCSeconds".as_bytes())),
614    StaticString::new(JsStr::latin1("toDateString".as_bytes())),
615    StaticString::new(JsStr::latin1("toGMTString".as_bytes())),
616    StaticString::new(JsStr::latin1("toISOString".as_bytes())),
617    StaticString::new(JsStr::latin1("toTimeString".as_bytes())),
618    StaticString::new(JsStr::latin1("toUTCString".as_bytes())),
619    StaticString::new(JsStr::latin1("now".as_bytes())),
620    StaticString::new(JsStr::latin1("UTC".as_bytes())),
621    StaticString::new(JsStr::latin1("getTimezoneOffset".as_bytes())),
622    StaticString::new(JsStr::latin1("getUTCMilliseconds".as_bytes())),
623    StaticString::new(JsStr::latin1("setUTCMilliseconds".as_bytes())),
624    StaticString::new(JsStr::latin1("toLocaleDateString".as_bytes())),
625    StaticString::new(JsStr::latin1("toLocaleTimeString".as_bytes())),
626    // JSON object
627    StaticString::new(JsStr::latin1("parse".as_bytes())),
628    StaticString::new(JsStr::latin1("stringify".as_bytes())),
629    // Promise object
630    StaticString::new(JsStr::latin1("promise".as_bytes())),
631    StaticString::new(JsStr::latin1("resolve".as_bytes())),
632    StaticString::new(JsStr::latin1("reject".as_bytes())),
633    StaticString::new(JsStr::latin1("all".as_bytes())),
634    StaticString::new(JsStr::latin1("allSettled".as_bytes())),
635    StaticString::new(JsStr::latin1("any".as_bytes())),
636    StaticString::new(JsStr::latin1("race".as_bytes())),
637    StaticString::new(JsStr::latin1("then".as_bytes())),
638    StaticString::new(JsStr::latin1("catch".as_bytes())),
639    StaticString::new(JsStr::latin1("finally".as_bytes())),
640    StaticString::new(JsStr::latin1("withResolvers".as_bytes())),
641    // Iterator object
642    StaticString::new(JsStr::latin1("Array Iterator".as_bytes())),
643    StaticString::new(JsStr::latin1("Set Iterator".as_bytes())),
644    StaticString::new(JsStr::latin1("String Iterator".as_bytes())),
645    StaticString::new(JsStr::latin1("Map Iterator".as_bytes())),
646    StaticString::new(JsStr::latin1("For In Iterator".as_bytes())),
647    StaticString::new(JsStr::latin1("RegExp String Iterator".as_bytes())),
648    // Iterator result object
649    StaticString::new(JsStr::latin1("done".as_bytes())),
650    // Math object
651    StaticString::new(JsStr::latin1("LN10".as_bytes())),
652    StaticString::new(JsStr::latin1("LN2".as_bytes())),
653    StaticString::new(JsStr::latin1("LOG10E".as_bytes())),
654    StaticString::new(JsStr::latin1("LOG2E".as_bytes())),
655    StaticString::new(JsStr::latin1("PI".as_bytes())),
656    StaticString::new(JsStr::latin1("SQRT1_2".as_bytes())),
657    StaticString::new(JsStr::latin1("SQRT2".as_bytes())),
658    StaticString::new(JsStr::latin1("abs".as_bytes())),
659    StaticString::new(JsStr::latin1("acos".as_bytes())),
660    StaticString::new(JsStr::latin1("acosh".as_bytes())),
661    StaticString::new(JsStr::latin1("asin".as_bytes())),
662    StaticString::new(JsStr::latin1("asinh".as_bytes())),
663    StaticString::new(JsStr::latin1("atan".as_bytes())),
664    StaticString::new(JsStr::latin1("atanh".as_bytes())),
665    StaticString::new(JsStr::latin1("atan2".as_bytes())),
666    StaticString::new(JsStr::latin1("cbrt".as_bytes())),
667    StaticString::new(JsStr::latin1("ceil".as_bytes())),
668    StaticString::new(JsStr::latin1("clz32".as_bytes())),
669    StaticString::new(JsStr::latin1("cos".as_bytes())),
670    StaticString::new(JsStr::latin1("cosh".as_bytes())),
671    StaticString::new(JsStr::latin1("exp".as_bytes())),
672    StaticString::new(JsStr::latin1("expm1".as_bytes())),
673    StaticString::new(JsStr::latin1("floor".as_bytes())),
674    StaticString::new(JsStr::latin1("fround".as_bytes())),
675    StaticString::new(JsStr::latin1("hypot".as_bytes())),
676    StaticString::new(JsStr::latin1("imul".as_bytes())),
677    StaticString::new(JsStr::latin1("log".as_bytes())),
678    StaticString::new(JsStr::latin1("log1p".as_bytes())),
679    StaticString::new(JsStr::latin1("log10".as_bytes())),
680    StaticString::new(JsStr::latin1("log2".as_bytes())),
681    StaticString::new(JsStr::latin1("max".as_bytes())),
682    StaticString::new(JsStr::latin1("min".as_bytes())),
683    StaticString::new(JsStr::latin1("pow".as_bytes())),
684    StaticString::new(JsStr::latin1("random".as_bytes())),
685    StaticString::new(JsStr::latin1("round".as_bytes())),
686    StaticString::new(JsStr::latin1("sign".as_bytes())),
687    StaticString::new(JsStr::latin1("sin".as_bytes())),
688    StaticString::new(JsStr::latin1("sinh".as_bytes())),
689    StaticString::new(JsStr::latin1("sqrt".as_bytes())),
690    StaticString::new(JsStr::latin1("tan".as_bytes())),
691    StaticString::new(JsStr::latin1("tanh".as_bytes())),
692    StaticString::new(JsStr::latin1("trunc".as_bytes())),
693    // TypedArray object
694    StaticString::new(JsStr::latin1("BYTES_PER_ELEMENT".as_bytes())),
695    StaticString::new(JsStr::latin1("buffer".as_bytes())),
696    StaticString::new(JsStr::latin1("byteLength".as_bytes())),
697    StaticString::new(JsStr::latin1("byteOffset".as_bytes())),
698    StaticString::new(JsStr::latin1("isView".as_bytes())),
699    StaticString::new(JsStr::latin1("subarray".as_bytes())),
700    StaticString::new(JsStr::latin1("get byteLength".as_bytes())),
701    StaticString::new(JsStr::latin1("get buffer".as_bytes())),
702    StaticString::new(JsStr::latin1("get byteOffset".as_bytes())),
703    StaticString::new(JsStr::latin1("get size".as_bytes())),
704    StaticString::new(JsStr::latin1("get length".as_bytes())),
705    // DataView object
706    StaticString::new(JsStr::latin1("getBigInt64".as_bytes())),
707    StaticString::new(JsStr::latin1("getBigUint64".as_bytes())),
708    StaticString::new(JsStr::latin1("getFloat16".as_bytes())),
709    StaticString::new(JsStr::latin1("getFloat32".as_bytes())),
710    StaticString::new(JsStr::latin1("getFloat64".as_bytes())),
711    StaticString::new(JsStr::latin1("getInt8".as_bytes())),
712    StaticString::new(JsStr::latin1("getInt16".as_bytes())),
713    StaticString::new(JsStr::latin1("getInt32".as_bytes())),
714    StaticString::new(JsStr::latin1("getUint8".as_bytes())),
715    StaticString::new(JsStr::latin1("getUint16".as_bytes())),
716    StaticString::new(JsStr::latin1("getUint32".as_bytes())),
717    StaticString::new(JsStr::latin1("setBigInt64".as_bytes())),
718    StaticString::new(JsStr::latin1("setBigUint64".as_bytes())),
719    StaticString::new(JsStr::latin1("setFloat16".as_bytes())),
720    StaticString::new(JsStr::latin1("setFloat32".as_bytes())),
721    StaticString::new(JsStr::latin1("setFloat64".as_bytes())),
722    StaticString::new(JsStr::latin1("setInt8".as_bytes())),
723    StaticString::new(JsStr::latin1("setInt16".as_bytes())),
724    StaticString::new(JsStr::latin1("setInt32".as_bytes())),
725    StaticString::new(JsStr::latin1("setUint8".as_bytes())),
726    StaticString::new(JsStr::latin1("setUint16".as_bytes())),
727    StaticString::new(JsStr::latin1("setUint32".as_bytes())),
728    // WeakRef object
729    StaticString::new(JsStr::latin1("deref".as_bytes())),
730    // Atomic object
731    StaticString::new(JsStr::latin1("and".as_bytes())),
732    StaticString::new(JsStr::latin1("compareExchange".as_bytes())),
733    StaticString::new(JsStr::latin1("exchange".as_bytes())),
734    StaticString::new(JsStr::latin1("isLockFree".as_bytes())),
735    StaticString::new(JsStr::latin1("load".as_bytes())),
736    StaticString::new(JsStr::latin1("or".as_bytes())),
737    StaticString::new(JsStr::latin1("store".as_bytes())),
738    StaticString::new(JsStr::latin1("wait".as_bytes())),
739    StaticString::new(JsStr::latin1("notify".as_bytes())),
740    StaticString::new(JsStr::latin1("xor".as_bytes())),
741    // Intl object
742    StaticString::new(JsStr::latin1("getCanonicalLocales".as_bytes())),
743    StaticString::new(JsStr::latin1("get compare".as_bytes())),
744    StaticString::new(JsStr::latin1("supportedLocalesOf".as_bytes())),
745    StaticString::new(JsStr::latin1("Intl.Collator".as_bytes())),
746    StaticString::new(JsStr::latin1("compare".as_bytes())),
747    StaticString::new(JsStr::latin1("resolvedOptions".as_bytes())),
748    StaticString::new(JsStr::latin1("Intl.ListFormat".as_bytes())),
749    StaticString::new(JsStr::latin1("format".as_bytes())),
750    StaticString::new(JsStr::latin1("formatToParts".as_bytes())),
751    StaticString::new(JsStr::latin1("get baseName".as_bytes())),
752    StaticString::new(JsStr::latin1("get calendar".as_bytes())),
753    StaticString::new(JsStr::latin1("get caseFirst".as_bytes())),
754    StaticString::new(JsStr::latin1("get collation".as_bytes())),
755    StaticString::new(JsStr::latin1("get hourCycle".as_bytes())),
756    StaticString::new(JsStr::latin1("get numeric".as_bytes())),
757    StaticString::new(JsStr::latin1("get numberingSystem".as_bytes())),
758    StaticString::new(JsStr::latin1("get language".as_bytes())),
759    StaticString::new(JsStr::latin1("get script".as_bytes())),
760    StaticString::new(JsStr::latin1("get region".as_bytes())),
761    StaticString::new(JsStr::latin1("Intl.Locale".as_bytes())),
762    StaticString::new(JsStr::latin1("maximize".as_bytes())),
763    StaticString::new(JsStr::latin1("minimize".as_bytes())),
764    StaticString::new(JsStr::latin1("baseName".as_bytes())),
765    StaticString::new(JsStr::latin1("calendar".as_bytes())),
766    StaticString::new(JsStr::latin1("caseFirst".as_bytes())),
767    StaticString::new(JsStr::latin1("collation".as_bytes())),
768    StaticString::new(JsStr::latin1("hourCycle".as_bytes())),
769    StaticString::new(JsStr::latin1("numeric".as_bytes())),
770    StaticString::new(JsStr::latin1("numberingSystem".as_bytes())),
771    StaticString::new(JsStr::latin1("language".as_bytes())),
772    StaticString::new(JsStr::latin1("script".as_bytes())),
773    StaticString::new(JsStr::latin1("region".as_bytes())),
774    StaticString::new(JsStr::latin1("Intl.Segmenter".as_bytes())),
775    StaticString::new(JsStr::latin1("segment".as_bytes())),
776    StaticString::new(JsStr::latin1("containing".as_bytes())),
777    StaticString::new(JsStr::latin1("Segmenter String Iterator".as_bytes())),
778    StaticString::new(JsStr::latin1("Intl.PluralRules".as_bytes())),
779    StaticString::new(JsStr::latin1("select".as_bytes())),
780    // Temporal object
781    StaticString::new(JsStr::latin1("get Id".as_bytes())),
782    StaticString::new(JsStr::latin1("getOffsetNanosecondsFor".as_bytes())),
783    StaticString::new(JsStr::latin1("getOffsetStringFor".as_bytes())),
784    StaticString::new(JsStr::latin1("getPlainDateTimeFor".as_bytes())),
785    StaticString::new(JsStr::latin1("getInstantFor".as_bytes())),
786    StaticString::new(JsStr::latin1("getPossibleInstantFor".as_bytes())),
787    StaticString::new(JsStr::latin1("getNextTransition".as_bytes())),
788    StaticString::new(JsStr::latin1("getPreviousTransition".as_bytes())),
789    StaticString::new(JsStr::latin1("id".as_bytes())),
790    StaticString::new(JsStr::latin1("Now".as_bytes())),
791    StaticString::new(JsStr::latin1("Calendar".as_bytes())),
792    StaticString::new(JsStr::latin1("Duration".as_bytes())),
793    StaticString::new(JsStr::latin1("Instant".as_bytes())),
794    StaticString::new(JsStr::latin1("PlainDate".as_bytes())),
795    StaticString::new(JsStr::latin1("PlainDateTime".as_bytes())),
796    StaticString::new(JsStr::latin1("PlainMonthDay".as_bytes())),
797    StaticString::new(JsStr::latin1("PlainTime".as_bytes())),
798    StaticString::new(JsStr::latin1("PlainYearMonth".as_bytes())),
799    StaticString::new(JsStr::latin1("TimeZone".as_bytes())),
800    StaticString::new(JsStr::latin1("ZonedDateTime".as_bytes())),
801    StaticString::new(JsStr::latin1("timeZoneId".as_bytes())),
802    StaticString::new(JsStr::latin1("instant".as_bytes())),
803    StaticString::new(JsStr::latin1("plainDateTime".as_bytes())),
804    StaticString::new(JsStr::latin1("plainDateTimeISO".as_bytes())),
805    StaticString::new(JsStr::latin1("zonedDateTime".as_bytes())),
806    StaticString::new(JsStr::latin1("zonedDateTimeISO".as_bytes())),
807    StaticString::new(JsStr::latin1("plainDate".as_bytes())),
808    StaticString::new(JsStr::latin1("plainDateISO".as_bytes())),
809    StaticString::new(JsStr::latin1("get epochSeconds".as_bytes())),
810    StaticString::new(JsStr::latin1("get epochMilliseconds".as_bytes())),
811    StaticString::new(JsStr::latin1("get epochMicroseconds".as_bytes())),
812    StaticString::new(JsStr::latin1("get epochNanoseconds".as_bytes())),
813    StaticString::new(JsStr::latin1("epochSeconds".as_bytes())),
814    StaticString::new(JsStr::latin1("epochMilliseconds".as_bytes())),
815    StaticString::new(JsStr::latin1("epochMicroseconds".as_bytes())),
816    StaticString::new(JsStr::latin1("epochNanoseconds".as_bytes())),
817    StaticString::new(JsStr::latin1("subtract".as_bytes())),
818    StaticString::new(JsStr::latin1("until".as_bytes())),
819    StaticString::new(JsStr::latin1("since".as_bytes())),
820    StaticString::new(JsStr::latin1("equals".as_bytes())),
821    StaticString::new(JsStr::latin1("toZonedDateTime".as_bytes())),
822    StaticString::new(JsStr::latin1("toZonedDateTimeISO".as_bytes())),
823    StaticString::new(JsStr::latin1("get Years".as_bytes())),
824    StaticString::new(JsStr::latin1("get Months".as_bytes())),
825    StaticString::new(JsStr::latin1("get Weeks".as_bytes())),
826    StaticString::new(JsStr::latin1("get Days".as_bytes())),
827    StaticString::new(JsStr::latin1("get Hours".as_bytes())),
828    StaticString::new(JsStr::latin1("get Minutes".as_bytes())),
829    StaticString::new(JsStr::latin1("get Seconds".as_bytes())),
830    StaticString::new(JsStr::latin1("get Milliseconds".as_bytes())),
831    StaticString::new(JsStr::latin1("get Microseconds".as_bytes())),
832    StaticString::new(JsStr::latin1("get Nanoseconds".as_bytes())),
833    StaticString::new(JsStr::latin1("get Sign".as_bytes())),
834    StaticString::new(JsStr::latin1("get blank".as_bytes())),
835    StaticString::new(JsStr::latin1("years".as_bytes())),
836    StaticString::new(JsStr::latin1("months".as_bytes())),
837    StaticString::new(JsStr::latin1("weeks".as_bytes())),
838    StaticString::new(JsStr::latin1("days".as_bytes())),
839    StaticString::new(JsStr::latin1("hours".as_bytes())),
840    StaticString::new(JsStr::latin1("minutes".as_bytes())),
841    StaticString::new(JsStr::latin1("seconds".as_bytes())),
842    StaticString::new(JsStr::latin1("milliseconds".as_bytes())),
843    StaticString::new(JsStr::latin1("microseconds".as_bytes())),
844    StaticString::new(JsStr::latin1("nanoseconds".as_bytes())),
845    StaticString::new(JsStr::latin1("blank".as_bytes())),
846    StaticString::new(JsStr::latin1("negated".as_bytes())),
847    StaticString::new(JsStr::latin1("total".as_bytes())),
848    StaticString::new(JsStr::latin1("get calendarId".as_bytes())),
849    StaticString::new(JsStr::latin1("get year".as_bytes())),
850    StaticString::new(JsStr::latin1("get month".as_bytes())),
851    StaticString::new(JsStr::latin1("get monthCode".as_bytes())),
852    StaticString::new(JsStr::latin1("get day".as_bytes())),
853    StaticString::new(JsStr::latin1("get dayOfWeek".as_bytes())),
854    StaticString::new(JsStr::latin1("get dayOfYear".as_bytes())),
855    StaticString::new(JsStr::latin1("get weekOfYear".as_bytes())),
856    StaticString::new(JsStr::latin1("get yearOfWeek".as_bytes())),
857    StaticString::new(JsStr::latin1("get daysInWeek".as_bytes())),
858    StaticString::new(JsStr::latin1("get daysInMonth".as_bytes())),
859    StaticString::new(JsStr::latin1("get daysInYear".as_bytes())),
860    StaticString::new(JsStr::latin1("get monthsInYear".as_bytes())),
861    StaticString::new(JsStr::latin1("get inLeapYear".as_bytes())),
862    StaticString::new(JsStr::latin1("calendarId".as_bytes())),
863    StaticString::new(JsStr::latin1("year".as_bytes())),
864    StaticString::new(JsStr::latin1("month".as_bytes())),
865    StaticString::new(JsStr::latin1("monthCode".as_bytes())),
866    StaticString::new(JsStr::latin1("day".as_bytes())),
867    StaticString::new(JsStr::latin1("dayOfWeek".as_bytes())),
868    StaticString::new(JsStr::latin1("dayOfYear".as_bytes())),
869    StaticString::new(JsStr::latin1("weekOfYear".as_bytes())),
870    StaticString::new(JsStr::latin1("yearOfWeek".as_bytes())),
871    StaticString::new(JsStr::latin1("daysInWeek".as_bytes())),
872    StaticString::new(JsStr::latin1("daysInMonth".as_bytes())),
873    StaticString::new(JsStr::latin1("daysInYear".as_bytes())),
874    StaticString::new(JsStr::latin1("monthsInYear".as_bytes())),
875    StaticString::new(JsStr::latin1("inLeapYear".as_bytes())),
876    StaticString::new(JsStr::latin1("toPlainYearMonth".as_bytes())),
877    StaticString::new(JsStr::latin1("toPlainMonthDay".as_bytes())),
878    StaticString::new(JsStr::latin1("getISOFields".as_bytes())),
879    StaticString::new(JsStr::latin1("getCalendar".as_bytes())),
880    StaticString::new(JsStr::latin1("withCalendar".as_bytes())),
881    StaticString::new(JsStr::latin1("dateFromFields".as_bytes())),
882    StaticString::new(JsStr::latin1("yearMonthFromFields".as_bytes())),
883    StaticString::new(JsStr::latin1("monthDayFromFields".as_bytes())),
884    StaticString::new(JsStr::latin1("dateAdd".as_bytes())),
885    StaticString::new(JsStr::latin1("dateUntil".as_bytes())),
886    StaticString::new(JsStr::latin1("era".as_bytes())),
887    StaticString::new(JsStr::latin1("eraYear".as_bytes())),
888    StaticString::new(JsStr::latin1("fields".as_bytes())),
889    StaticString::new(JsStr::latin1("mergeFields".as_bytes())),
890    // Console object
891    StaticString::new(JsStr::latin1("console".as_bytes())),
892    StaticString::new(JsStr::latin1("assert".as_bytes())),
893    StaticString::new(JsStr::latin1("debug".as_bytes())),
894    StaticString::new(JsStr::latin1("error".as_bytes())),
895    StaticString::new(JsStr::latin1("info".as_bytes())),
896    StaticString::new(JsStr::latin1("trace".as_bytes())),
897    StaticString::new(JsStr::latin1("warn".as_bytes())),
898    StaticString::new(JsStr::latin1("exception".as_bytes())),
899    StaticString::new(JsStr::latin1("count".as_bytes())),
900    StaticString::new(JsStr::latin1("countReset".as_bytes())),
901    StaticString::new(JsStr::latin1("group".as_bytes())),
902    StaticString::new(JsStr::latin1("groupCollapsed".as_bytes())),
903    StaticString::new(JsStr::latin1("groupEnd".as_bytes())),
904    StaticString::new(JsStr::latin1("time".as_bytes())),
905    StaticString::new(JsStr::latin1("timeLog".as_bytes())),
906    StaticString::new(JsStr::latin1("timeEnd".as_bytes())),
907    StaticString::new(JsStr::latin1("dir".as_bytes())),
908    StaticString::new(JsStr::latin1("dirxml".as_bytes())),
909    // Minified name
910    StaticString::new(JsStr::latin1("a".as_bytes())),
911    StaticString::new(JsStr::latin1("c".as_bytes())),
912    StaticString::new(JsStr::latin1("d".as_bytes())),
913    StaticString::new(JsStr::latin1("e".as_bytes())),
914    StaticString::new(JsStr::latin1("f".as_bytes())),
915    StaticString::new(JsStr::latin1("g".as_bytes())),
916    StaticString::new(JsStr::latin1("h".as_bytes())),
917    StaticString::new(JsStr::latin1("i".as_bytes())),
918    StaticString::new(JsStr::latin1("j".as_bytes())),
919    StaticString::new(JsStr::latin1("k".as_bytes())),
920    StaticString::new(JsStr::latin1("l".as_bytes())),
921    StaticString::new(JsStr::latin1("m".as_bytes())),
922    StaticString::new(JsStr::latin1("n".as_bytes())),
923    StaticString::new(JsStr::latin1("o".as_bytes())),
924    StaticString::new(JsStr::latin1("p".as_bytes())),
925    StaticString::new(JsStr::latin1("q".as_bytes())),
926    StaticString::new(JsStr::latin1("r".as_bytes())),
927    StaticString::new(JsStr::latin1("s".as_bytes())),
928    StaticString::new(JsStr::latin1("t".as_bytes())),
929    StaticString::new(JsStr::latin1("u".as_bytes())),
930    StaticString::new(JsStr::latin1("v".as_bytes())),
931    StaticString::new(JsStr::latin1("w".as_bytes())),
932    StaticString::new(JsStr::latin1("x".as_bytes())),
933    StaticString::new(JsStr::latin1("y".as_bytes())),
934    StaticString::new(JsStr::latin1("z".as_bytes())),
935    StaticString::new(JsStr::latin1("A".as_bytes())),
936    StaticString::new(JsStr::latin1("C".as_bytes())),
937    StaticString::new(JsStr::latin1("D".as_bytes())),
938    StaticString::new(JsStr::latin1("E".as_bytes())),
939    StaticString::new(JsStr::latin1("F".as_bytes())),
940    StaticString::new(JsStr::latin1("G".as_bytes())),
941    StaticString::new(JsStr::latin1("H".as_bytes())),
942    StaticString::new(JsStr::latin1("I".as_bytes())),
943    StaticString::new(JsStr::latin1("J".as_bytes())),
944    StaticString::new(JsStr::latin1("K".as_bytes())),
945    StaticString::new(JsStr::latin1("L".as_bytes())),
946    StaticString::new(JsStr::latin1("M".as_bytes())),
947    StaticString::new(JsStr::latin1("N".as_bytes())),
948    StaticString::new(JsStr::latin1("O".as_bytes())),
949    StaticString::new(JsStr::latin1("P".as_bytes())),
950    StaticString::new(JsStr::latin1("Q".as_bytes())),
951    StaticString::new(JsStr::latin1("R".as_bytes())),
952    StaticString::new(JsStr::latin1("S".as_bytes())),
953    StaticString::new(JsStr::latin1("T".as_bytes())),
954    StaticString::new(JsStr::latin1("U".as_bytes())),
955    StaticString::new(JsStr::latin1("V".as_bytes())),
956    StaticString::new(JsStr::latin1("W".as_bytes())),
957    StaticString::new(JsStr::latin1("X".as_bytes())),
958    StaticString::new(JsStr::latin1("Y".as_bytes())),
959    StaticString::new(JsStr::latin1("Z".as_bytes())),
960    StaticString::new(JsStr::latin1("_".as_bytes())),
961    StaticString::new(JsStr::latin1("$".as_bytes())),
962];