| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> | 
					
						
							|  |  |  |  * All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Redistribution and use in source and binary forms, with or without | 
					
						
							|  |  |  |  * modification, are permitted provided that the following conditions are met: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 1. Redistributions of source code must retain the above copyright notice, this | 
					
						
							|  |  |  |  *    list of conditions and the following disclaimer. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 2. Redistributions in binary form must reproduce the above copyright notice, | 
					
						
							|  |  |  |  *    this list of conditions and the following disclaimer in the documentation | 
					
						
							|  |  |  |  *    and/or other materials provided with the distribution. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
					
						
							|  |  |  |  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
					
						
							|  |  |  |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 
					
						
							|  |  |  |  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | 
					
						
							|  |  |  |  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
					
						
							|  |  |  |  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | 
					
						
							|  |  |  |  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | 
					
						
							|  |  |  |  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | 
					
						
							|  |  |  |  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
					
						
							|  |  |  |  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/FlyString.h>
 | 
					
						
							|  |  |  | #include <LibJS/Forward.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace JS { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ENUMERATE_STANDARD_PROPERTY_NAMES(P) \
 | 
					
						
							|  |  |  |     P(BigInt)                                \ | 
					
						
							|  |  |  |     P(Boolean)                               \ | 
					
						
							|  |  |  |     P(E)                                     \ | 
					
						
							|  |  |  |     P(EPSILON)                               \ | 
					
						
							|  |  |  |     P(Infinity)                              \ | 
					
						
							|  |  |  |     P(JSON)                                  \ | 
					
						
							|  |  |  |     P(LN10)                                  \ | 
					
						
							|  |  |  |     P(LN2)                                   \ | 
					
						
							|  |  |  |     P(LOG10E)                                \ | 
					
						
							|  |  |  |     P(LOG2E)                                 \ | 
					
						
							|  |  |  |     P(MAX_SAFE_INTEGER)                      \ | 
					
						
							|  |  |  |     P(MIN_SAFE_INTEGER)                      \ | 
					
						
							|  |  |  |     P(Math)                                  \ | 
					
						
							|  |  |  |     P(NEGATIVE_INFINITY)                     \ | 
					
						
							|  |  |  |     P(NaN)                                   \ | 
					
						
							|  |  |  |     P(Number)                                \ | 
					
						
							|  |  |  |     P(PI)                                    \ | 
					
						
							|  |  |  |     P(POSITIVE_INFINITY)                     \ | 
					
						
							|  |  |  |     P(Proxy)                                 \ | 
					
						
							|  |  |  |     P(Reflect)                               \ | 
					
						
							|  |  |  |     P(RegExp)                                \ | 
					
						
							|  |  |  |     P(SQRT1_2)                               \ | 
					
						
							|  |  |  |     P(SQRT2)                                 \ | 
					
						
							|  |  |  |     P(String)                                \ | 
					
						
							|  |  |  |     P(Symbol)                                \ | 
					
						
							|  |  |  |     P(UTC)                                   \ | 
					
						
							|  |  |  |     P(abs)                                   \ | 
					
						
							|  |  |  |     P(acosh)                                 \ | 
					
						
							|  |  |  |     P(apply)                                 \ | 
					
						
							|  |  |  |     P(asIntN)                                \ | 
					
						
							|  |  |  |     P(asUintN)                               \ | 
					
						
							|  |  |  |     P(asinh)                                 \ | 
					
						
							|  |  |  |     P(atanh)                                 \ | 
					
						
							|  |  |  |     P(bind)                                  \ | 
					
						
							|  |  |  |     P(call)                                  \ | 
					
						
							|  |  |  |     P(cbrt)                                  \ | 
					
						
							|  |  |  |     P(ceil)                                  \ | 
					
						
							|  |  |  |     P(charAt)                                \ | 
					
						
							|  |  |  |     P(charCodeAt)                            \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(clear)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(clz32)                                 \ | 
					
						
							|  |  |  |     P(concat)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(configurable)                          \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(console)                               \ | 
					
						
							|  |  |  |     P(construct)                             \ | 
					
						
							|  |  |  |     P(constructor)                           \ | 
					
						
							|  |  |  |     P(cos)                                   \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(count)                                 \ | 
					
						
							|  |  |  |     P(countReset)                            \ | 
					
						
							|  |  |  |     P(debug)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(defineProperty)                        \ | 
					
						
							|  |  |  |     P(deleteProperty)                        \ | 
					
						
							|  |  |  |     P(description)                           \ | 
					
						
							|  |  |  |     P(done)                                  \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(dotAll)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(entries)                               \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(enumerable)                            \ | 
					
						
							|  |  |  |     P(error)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(every)                                 \ | 
					
						
							| 
									
										
										
										
											2020-11-22 14:18:49 +03:30
										 |  |  |     P(exec)                                  \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(exp)                                   \ | 
					
						
							|  |  |  |     P(expm1)                                 \ | 
					
						
							|  |  |  |     P(fill)                                  \ | 
					
						
							|  |  |  |     P(filter)                                \ | 
					
						
							|  |  |  |     P(find)                                  \ | 
					
						
							|  |  |  |     P(findIndex)                             \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(flags)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(floor)                                 \ | 
					
						
							|  |  |  |     P(forEach)                               \ | 
					
						
							|  |  |  |     P(from)                                  \ | 
					
						
							|  |  |  |     P(fromCharCode)                          \ | 
					
						
							|  |  |  |     P(gc)                                    \ | 
					
						
							|  |  |  |     P(get)                                   \ | 
					
						
							|  |  |  |     P(getDate)                               \ | 
					
						
							|  |  |  |     P(getDay)                                \ | 
					
						
							|  |  |  |     P(getFullYear)                           \ | 
					
						
							|  |  |  |     P(getHours)                              \ | 
					
						
							|  |  |  |     P(getMilliseconds)                       \ | 
					
						
							|  |  |  |     P(getMinutes)                            \ | 
					
						
							|  |  |  |     P(getMonth)                              \ | 
					
						
							|  |  |  |     P(getOwnPropertyDescriptor)              \ | 
					
						
							|  |  |  |     P(getOwnPropertyNames)                   \ | 
					
						
							|  |  |  |     P(getPrototypeOf)                        \ | 
					
						
							|  |  |  |     P(getSeconds)                            \ | 
					
						
							|  |  |  |     P(getTime)                               \ | 
					
						
							|  |  |  |     P(getUTCDate)                            \ | 
					
						
							|  |  |  |     P(getUTCDay)                             \ | 
					
						
							|  |  |  |     P(getUTCFullYear)                        \ | 
					
						
							|  |  |  |     P(getUTCHours)                           \ | 
					
						
							|  |  |  |     P(getUTCMilliseconds)                    \ | 
					
						
							|  |  |  |     P(getUTCMinutes)                         \ | 
					
						
							|  |  |  |     P(getUTCMonth)                           \ | 
					
						
							|  |  |  |     P(getUTCSeconds)                         \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(global)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(globalThis)                            \ | 
					
						
							| 
									
										
										
										
											2020-11-22 14:18:49 +03:30
										 |  |  |     P(groups)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(has)                                   \ | 
					
						
							|  |  |  |     P(hasOwnProperty)                        \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(ignoreCase)                            \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(includes)                              \ | 
					
						
							| 
									
										
										
										
											2020-11-22 14:18:49 +03:30
										 |  |  |     P(index)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(indexOf)                               \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(info)                                  \ | 
					
						
							| 
									
										
										
										
											2020-11-22 14:18:49 +03:30
										 |  |  |     P(input)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(is)                                    \ | 
					
						
							|  |  |  |     P(isArray)                               \ | 
					
						
							|  |  |  |     P(isExtensible)                          \ | 
					
						
							|  |  |  |     P(isFinite)                              \ | 
					
						
							|  |  |  |     P(isInteger)                             \ | 
					
						
							|  |  |  |     P(isNaN)                                 \ | 
					
						
							|  |  |  |     P(isSafeInteger)                         \ | 
					
						
							|  |  |  |     P(join)                                  \ | 
					
						
							|  |  |  |     P(keyFor)                                \ | 
					
						
							|  |  |  |     P(keys)                                  \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(lastIndex)                             \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(lastIndexOf)                           \ | 
					
						
							|  |  |  |     P(length)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(log)                                   \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(log1p)                                 \ | 
					
						
							|  |  |  |     P(map)                                   \ | 
					
						
							|  |  |  |     P(max)                                   \ | 
					
						
							|  |  |  |     P(message)                               \ | 
					
						
							|  |  |  |     P(min)                                   \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(multiline)                             \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(name)                                  \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(next)                                  \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(now)                                   \ | 
					
						
							|  |  |  |     P(of)                                    \ | 
					
						
							|  |  |  |     P(ownKeys)                               \ | 
					
						
							|  |  |  |     P(padEnd)                                \ | 
					
						
							|  |  |  |     P(padStart)                              \ | 
					
						
							|  |  |  |     P(parse)                                 \ | 
					
						
							|  |  |  |     P(parseFloat)                            \ | 
					
						
							|  |  |  |     P(pop)                                   \ | 
					
						
							|  |  |  |     P(pow)                                   \ | 
					
						
							|  |  |  |     P(preventExtensions)                     \ | 
					
						
							|  |  |  |     P(prototype)                             \ | 
					
						
							|  |  |  |     P(push)                                  \ | 
					
						
							|  |  |  |     P(random)                                \ | 
					
						
							|  |  |  |     P(raw)                                   \ | 
					
						
							|  |  |  |     P(reduce)                                \ | 
					
						
							|  |  |  |     P(reduceRight)                           \ | 
					
						
							|  |  |  |     P(repeat)                                \ | 
					
						
							|  |  |  |     P(reverse)                               \ | 
					
						
							|  |  |  |     P(round)                                 \ | 
					
						
							|  |  |  |     P(set)                                   \ | 
					
						
							|  |  |  |     P(setPrototypeOf)                        \ | 
					
						
							|  |  |  |     P(shift)                                 \ | 
					
						
							|  |  |  |     P(sign)                                  \ | 
					
						
							|  |  |  |     P(sin)                                   \ | 
					
						
							|  |  |  |     P(slice)                                 \ | 
					
						
							|  |  |  |     P(some)                                  \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(source)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(splice)                                \ | 
					
						
							|  |  |  |     P(sqrt)                                  \ | 
					
						
							|  |  |  |     P(startsWith)                            \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(sticky)                                \ | 
					
						
							| 
									
										
										
										
											2020-11-29 20:28:10 +01:00
										 |  |  |     P(stringify)                             \ | 
					
						
							|  |  |  |     P(substr)                                \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(substring)                             \ | 
					
						
							|  |  |  |     P(tan)                                   \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(test)                                  \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(toDateString)                          \ | 
					
						
							|  |  |  |     P(toISOString)                           \ | 
					
						
							|  |  |  |     P(toJSON)                                \ | 
					
						
							|  |  |  |     P(toLocaleDateString)                    \ | 
					
						
							|  |  |  |     P(toLocaleString)                        \ | 
					
						
							|  |  |  |     P(toLocaleTimeString)                    \ | 
					
						
							|  |  |  |     P(toLowerCase)                           \ | 
					
						
							|  |  |  |     P(toString)                              \ | 
					
						
							|  |  |  |     P(toTimeString)                          \ | 
					
						
							|  |  |  |     P(toUpperCase)                           \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(trace)                                 \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(trim)                                  \ | 
					
						
							|  |  |  |     P(trimEnd)                               \ | 
					
						
							|  |  |  |     P(trimStart)                             \ | 
					
						
							|  |  |  |     P(trunc)                                 \ | 
					
						
							|  |  |  |     P(undefined)                             \ | 
					
						
							| 
									
										
										
										
											2020-11-19 01:50:00 +03:30
										 |  |  |     P(unicode)                               \ | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  |     P(unshift)                               \ | 
					
						
							|  |  |  |     P(value)                                 \ | 
					
						
							|  |  |  |     P(valueOf)                               \ | 
					
						
							| 
									
										
										
										
											2020-10-14 00:03:58 +02:00
										 |  |  |     P(values)                                \ | 
					
						
							|  |  |  |     P(warn)                                  \ | 
					
						
							|  |  |  |     P(writable) | 
					
						
							| 
									
										
										
										
											2020-10-13 23:49:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | struct CommonPropertyNames { | 
					
						
							|  |  |  |     FlyString for_ { "for" }; | 
					
						
							|  |  |  | #define __ENUMERATE(x) FlyString x { #x };
 | 
					
						
							|  |  |  |     ENUMERATE_STANDARD_PROPERTY_NAMES(__ENUMERATE) | 
					
						
							|  |  |  | #undef __ENUMERATE
 | 
					
						
							|  |  |  | #define __JS_ENUMERATE(x, a, b, c) FlyString x { #x };
 | 
					
						
							|  |  |  |     JS_ENUMERATE_BUILTIN_TYPES | 
					
						
							|  |  |  | #undef __JS_ENUMERATE
 | 
					
						
							|  |  |  | #define __JS_ENUMERATE(x, a) FlyString x { #x };
 | 
					
						
							|  |  |  |     JS_ENUMERATE_WELL_KNOWN_SYMBOLS | 
					
						
							|  |  |  | #undef __JS_ENUMERATE
 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |