From 9bce51f651aad297ef9eb6df832bfdaf1de05d84 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 14:27:54 +0800
Subject: [PATCH] 青岛推送
---
node_modules/terser/lib/compress/index.js | 46 ++++++++++++++++++++++++----------------------
1 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/node_modules/terser/lib/compress/index.js b/node_modules/terser/lib/compress/index.js
index 9041ccb..bc396da 100644
--- a/node_modules/terser/lib/compress/index.js
+++ b/node_modules/terser/lib/compress/index.js
@@ -146,6 +146,7 @@
defaults,
HOP,
make_node,
+ make_void_0,
makePredicate,
MAP,
remove,
@@ -562,7 +563,7 @@
set_flag(exp.expression, SQUEEZED);
self.args = [];
} else {
- return make_node(AST_Undefined, self);
+ return make_void_0(self);
}
}
});
@@ -590,12 +591,7 @@
: make_node(AST_EmptyStatement, node);
}
return make_node(AST_SimpleStatement, node, {
- body: node.value || make_node(AST_UnaryPrefix, node, {
- operator: "void",
- expression: make_node(AST_Number, node, {
- value: 0
- })
- })
+ body: node.value || make_void_0(node)
});
}
if (node instanceof AST_Class || node instanceof AST_Lambda && node !== self) {
@@ -1198,8 +1194,8 @@
return make_node(self.body.CTOR, self, {
value: make_node(AST_Conditional, self, {
condition : self.condition,
- consequent : self.body.value || make_node(AST_Undefined, self.body),
- alternative : self.alternative.value || make_node(AST_Undefined, self.alternative)
+ consequent : self.body.value || make_void_0(self.body),
+ alternative : self.alternative.value || make_void_0(self.alternative),
}).transform(compressor)
}).optimize(compressor);
}
@@ -1752,7 +1748,7 @@
const value = condition.evaluate(compressor);
if (value === 1 || value === true) {
- return make_node(AST_Undefined, self);
+ return make_void_0(self).optimize(compressor);
}
}
}
@@ -2114,6 +2110,10 @@
) {
return make_sequence(self, [e, make_node(AST_True, self)]).optimize(compressor);
}
+ // Short-circuit common `void 0`
+ if (self.operator === "void" && e instanceof AST_Number && e.value === 0) {
+ return unsafe_undefined_ref(self, compressor) || self;
+ }
var seq = self.lift_sequences(compressor);
if (seq !== self) {
return seq;
@@ -2124,7 +2124,7 @@
self.expression = e;
return self;
} else {
- return make_node(AST_Undefined, self).optimize(compressor);
+ return make_void_0(self).optimize(compressor);
}
}
if (compressor.in_boolean_context()) {
@@ -2310,7 +2310,7 @@
if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor)
: !(expr instanceof AST_PropAccess && compressor.option("ie8"))) {
self.right = expr;
- self.left = make_node(AST_Undefined, self.left).optimize(compressor);
+ self.left = make_void_0(self.left).optimize(compressor);
if (self.operator.length == 2) self.operator += "=";
}
} else if (compressor.option("typeofs")
@@ -2323,7 +2323,7 @@
if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor)
: !(expr instanceof AST_PropAccess && compressor.option("ie8"))) {
self.left = expr;
- self.right = make_node(AST_Undefined, self.right).optimize(compressor);
+ self.right = make_void_0(self.right).optimize(compressor);
if (self.operator.length == 2) self.operator += "=";
}
} else if (self.left instanceof AST_SymbolRef
@@ -2964,7 +2964,8 @@
return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE;
}
-def_optimize(AST_Undefined, function(self, compressor) {
+/** Apply the `unsafe_undefined` option: find a variable called `undefined` and turn `self` into a reference to it. */
+function unsafe_undefined_ref(self, compressor) {
if (compressor.option("unsafe_undefined")) {
var undef = find_variable(compressor, "undefined");
if (undef) {
@@ -2977,14 +2978,15 @@
return ref;
}
}
+ return null;
+}
+
+def_optimize(AST_Undefined, function(self, compressor) {
+ var symbolref = unsafe_undefined_ref(self, compressor);
+ if (symbolref) return symbolref;
var lhs = compressor.is_lhs();
if (lhs && is_atomic(lhs, self)) return self;
- return make_node(AST_UnaryPrefix, self, {
- operator: "void",
- expression: make_node(AST_Number, self, {
- value: 0
- })
- });
+ return make_void_0(self);
});
def_optimize(AST_Infinity, function(self, compressor) {
@@ -3671,7 +3673,7 @@
}
}
if (retValue instanceof AST_Expansion) break FLATTEN;
- retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue;
+ retValue = retValue instanceof AST_Hole ? make_void_0(retValue) : retValue;
if (!flatten) values.unshift(retValue);
while (--i >= 0) {
var value = elements[i];
@@ -3710,7 +3712,7 @@
if (parent instanceof AST_UnaryPrefix && parent.operator === "delete") {
return make_node_from_constant(0, self);
}
- return make_node(AST_Undefined, self);
+ return make_void_0(self).optimize(compressor);
}
if (
self.expression instanceof AST_PropAccess
--
Gitblit v1.9.3