summaryrefslogtreecommitdiff
path: root/node_modules/terser/lib/compress/native-objects.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/terser/lib/compress/native-objects.js')
-rw-r--r--node_modules/terser/lib/compress/native-objects.js206
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",
- ],
-});