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