mirror of
https://github.com/swc-project/swc.git
synced 2024-12-21 04:32:01 +03:00
c6b22c57f8
Co-authored-by: Fábio Santos <fabiosantosart@gmail.com>
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
// Run this script to build jsprops.json
|
|
|
|
const fs = require('fs')
|
|
|
|
// Compatibility fix for some standard defined globals not defined on every js environment
|
|
var new_globals = ["Symbol", "Map", "Promise", "Proxy", "Reflect", "Set", "WeakMap", "WeakSet"];
|
|
var objects = {};
|
|
var global_ref = typeof global === "object" ? global : self;
|
|
|
|
new_globals.forEach(function (new_global) {
|
|
objects[new_global] = global_ref[new_global] || new Function();
|
|
});
|
|
|
|
const addedProps = new Set();
|
|
|
|
const add = propName => addedProps.add(propName);
|
|
|
|
[
|
|
"null",
|
|
"true",
|
|
"false",
|
|
"NaN",
|
|
"Infinity",
|
|
"-Infinity",
|
|
"undefined",
|
|
].forEach(add);
|
|
[ Object, Array, Function, Number,
|
|
String, Boolean, Error, Math,
|
|
Date, RegExp, objects.Symbol, ArrayBuffer,
|
|
DataView, decodeURI, decodeURIComponent,
|
|
encodeURI, encodeURIComponent, eval, EvalError,
|
|
Float32Array, Float64Array, Int8Array, Int16Array,
|
|
Int32Array, isFinite, isNaN, JSON, objects.Map, parseFloat,
|
|
parseInt, objects.Promise, objects.Proxy, RangeError, ReferenceError,
|
|
objects.Reflect, objects.Set, SyntaxError, TypeError, Uint8Array,
|
|
Uint8ClampedArray, Uint16Array, Uint32Array, URIError,
|
|
objects.WeakMap, objects.WeakSet
|
|
].forEach((ctor) => {
|
|
Object.getOwnPropertyNames(ctor).map(add);
|
|
if (ctor.prototype) {
|
|
Object.getOwnPropertyNames(ctor.prototype).map(add);
|
|
}
|
|
});
|
|
|
|
const propsJSON = JSON.stringify([...addedProps].sort(), null, 4)
|
|
|
|
fs.writeFileSync(__dirname + '/../src/lists/jsprops.json', propsJSON)
|