diff options
Diffstat (limited to 'node_modules/terser/lib/compress/native-objects.js')
| -rw-r--r-- | node_modules/terser/lib/compress/native-objects.js | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/node_modules/terser/lib/compress/native-objects.js b/node_modules/terser/lib/compress/native-objects.js deleted file mode 100644 index d7cb7042..00000000 --- a/node_modules/terser/lib/compress/native-objects.js +++ /dev/null @@ -1,206 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - <mihai.bazon@gmail.com> - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon <mihai.bazon@gmail.com> - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * 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 HOLDER “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 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. - - ***********************************************************************/ - -import { makePredicate } from "../utils/index.js"; - -// Lists of native methods, useful for `unsafe` option which assumes they exist. -// Note: Lots of methods and functions are missing here, in case they aren't pure -// or not available in all JS environments. - -function make_nested_lookup(obj) { - const out = new Map(); - for (var key of Object.keys(obj)) { - out.set(key, makePredicate(obj[key])); - } - - const does_have = (global_name, fname) => { - const inner_map = out.get(global_name); - return inner_map != null && inner_map.has(fname); - }; - return does_have; -} - -// Objects which are safe to access without throwing or causing a side effect. -// Usually we'd check the `unsafe` option first but these are way too common for that -export const pure_prop_access_globals = new Set([ - "Number", - "String", - "Array", - "Object", - "Function", - "Promise", -]); - -const object_methods = [ - "constructor", - "toString", - "valueOf", -]; - -export const is_pure_native_method = make_nested_lookup({ - Array: [ - "at", - "flat", - "includes", - "indexOf", - "join", - "lastIndexOf", - "slice", - ...object_methods, - ], - Boolean: object_methods, - Function: object_methods, - Number: [ - "toExponential", - "toFixed", - "toPrecision", - ...object_methods, - ], - Object: object_methods, - RegExp: [ - "test", - ...object_methods, - ], - String: [ - "at", - "charAt", - "charCodeAt", - "charPointAt", - "concat", - "endsWith", - "fromCharCode", - "fromCodePoint", - "includes", - "indexOf", - "italics", - "lastIndexOf", - "localeCompare", - "match", - "matchAll", - "normalize", - "padStart", - "padEnd", - "repeat", - "replace", - "replaceAll", - "search", - "slice", - "split", - "startsWith", - "substr", - "substring", - "repeat", - "toLocaleLowerCase", - "toLocaleUpperCase", - "toLowerCase", - "toUpperCase", - "trim", - "trimEnd", - "trimStart", - ...object_methods, - ], -}); - -export const is_pure_native_fn = make_nested_lookup({ - Array: [ - "isArray", - ], - Math: [ - "abs", - "acos", - "asin", - "atan", - "ceil", - "cos", - "exp", - "floor", - "log", - "round", - "sin", - "sqrt", - "tan", - "atan2", - "pow", - "max", - "min", - ], - Number: [ - "isFinite", - "isNaN", - ], - Object: [ - "create", - "getOwnPropertyDescriptor", - "getOwnPropertyNames", - "getPrototypeOf", - "isExtensible", - "isFrozen", - "isSealed", - "hasOwn", - "keys", - ], - String: [ - "fromCharCode", - ], -}); - -// Known numeric values which come with JS environments -export const is_pure_native_value = make_nested_lookup({ - Math: [ - "E", - "LN10", - "LN2", - "LOG2E", - "LOG10E", - "PI", - "SQRT1_2", - "SQRT2", - ], - Number: [ - "MAX_VALUE", - "MIN_VALUE", - "NaN", - "NEGATIVE_INFINITY", - "POSITIVE_INFINITY", - ], -}); |
