improve source mapping accuracy (#5608)

This commit is contained in:
Alex Lam S.L
2022-08-08 19:02:43 +01:00
committed by GitHub
parent f451a7ad79
commit 2c3c4ec323
8 changed files with 175 additions and 198 deletions

View File

@@ -293,7 +293,7 @@ Compressor.prototype.compress = function(node) {
function export_symbol(sym) {
if (!(sym instanceof AST_SymbolDeclaration)) return;
var node = make_node(AST_SymbolExport, sym, sym);
var node = make_node(AST_SymbolExport, sym);
node.alias = make_node(AST_String, node, { value: node.name });
props.push(node);
}
@@ -304,7 +304,7 @@ Compressor.prototype.compress = function(node) {
var tt = new TreeTransformer(function(node) {
if (insert) {
if (node instanceof AST_Directive) node = make_node(AST_SimpleStatement, node, {
body: make_node(AST_String, node, node),
body: make_node(AST_String, node),
});
if (node instanceof AST_SimpleStatement) {
return transform ? transform(node) : make_node(AST_Return, node, { value: node.body });
@@ -312,7 +312,7 @@ Compressor.prototype.compress = function(node) {
} else if (node instanceof AST_Return) {
if (transform) return transform(node);
var value = node.value;
if (value instanceof AST_String) return make_node(AST_Directive, node, value);
if (value instanceof AST_String) return make_node(AST_Directive, value);
return make_node(AST_SimpleStatement, node, {
body: value || make_node(AST_UnaryPrefix, node, {
operator: "void",
@@ -353,7 +353,7 @@ Compressor.prototype.compress = function(node) {
});
case 1:
var stat = self.body[0];
if (stat instanceof AST_Directive) return make_node(AST_String, self, stat);
if (stat instanceof AST_Directive) return make_node(AST_String, stat);
if (stat instanceof AST_SimpleStatement) return stat.body;
default:
return make_node(AST_Call, self, {
@@ -693,7 +693,7 @@ Compressor.prototype.compress = function(node) {
}
function make_ref(ref, fixed) {
var node = make_node(AST_SymbolRef, ref, ref);
var node = make_node(AST_SymbolRef, ref);
node.fixed = fixed || make_node(AST_Undefined, ref);
return node;
}
@@ -839,7 +839,7 @@ Compressor.prototype.compress = function(node) {
for (var i = 0, len = node.elements.length; i < len; i++) {
if (value.elements[i] instanceof AST_Spread) return node;
}
if (!fixed_node) fixed_node = make_node(AST_Array, node);
if (!fixed_node) fixed_node = make_node(AST_Array, node, {});
fixed_node.elements = value.elements.slice(len);
return fixed_node;
});
@@ -924,7 +924,7 @@ Compressor.prototype.compress = function(node) {
var rest = fn.rest, fixed_node;
if (rest) scan_declaration(tw, compressor, rest, compressor.option("rests") && function() {
if (fn.rest !== rest) return rest;
if (!fixed_node) fixed_node = make_node(AST_Array, fn);
if (!fixed_node) fixed_node = make_node(AST_Array, fn, {});
fixed_node.elements = iife.args.slice(fn.argnames.length);
return fixed_node;
}, visit);
@@ -1622,7 +1622,7 @@ Compressor.prototype.compress = function(node) {
AST_DefaultValue.DEFMETHOD("convert_symbol", convert_destructured);
AST_Destructured.DEFMETHOD("convert_symbol", convert_destructured);
function convert_symbol(type, process) {
var node = make_node(type, this, this);
var node = make_node(type, this);
return process(node, this) || node;
}
AST_SymbolDeclaration.DEFMETHOD("convert_symbol", convert_symbol);
@@ -1730,19 +1730,18 @@ Compressor.prototype.compress = function(node) {
}
function make_node(ctor, orig, props) {
if (!props) props = {};
if (orig) {
if (!props.start) props.start = orig.start;
if (!props.end) props.end = orig.end;
if (props) {
props.start = orig.start;
props.end = orig.end;
} else {
props = orig;
}
return new ctor(props);
}
function make_sequence(orig, expressions) {
if (expressions.length == 1) return expressions[0];
return make_node(AST_Sequence, orig, {
expressions: expressions.reduce(merge_sequence, [])
});
return make_node(AST_Sequence, orig, { expressions: expressions.reduce(merge_sequence, []) });
}
function make_node_from_constant(val, orig) {
@@ -1754,7 +1753,7 @@ Compressor.prototype.compress = function(node) {
if (isFinite(val)) {
return 1 / val < 0 ? make_node(AST_UnaryPrefix, orig, {
operator: "-",
expression: make_node(AST_Number, orig, { value: -val })
expression: make_node(AST_Number, orig, { value: -val }),
}) : make_node(AST_Number, orig, { value: val });
}
return val < 0 ? make_node(AST_UnaryPrefix, orig, {
@@ -1772,9 +1771,7 @@ Compressor.prototype.compress = function(node) {
if (val instanceof RegExp) {
return make_node(AST_RegExp, orig, { value: val });
}
throw new Error(string_template("Can't handle constant of type: {type}", {
type: typeof val
}));
throw new Error(string_template("Can't handle constant of type: {type}", { type: typeof val }));
}
}
@@ -3104,10 +3101,10 @@ Compressor.prototype.compress = function(node) {
}).length);
if (declared > 1 && !(lhs instanceof AST_SymbolFunarg)) {
mangleable_var(expr.value);
return make_node(AST_SymbolRef, lhs, lhs);
return make_node(AST_SymbolRef, lhs);
}
if (mangleable_var(expr.value) || remaining == 1 && !compressor.exposed(def)) {
return make_node(AST_SymbolRef, lhs, lhs);
return make_node(AST_SymbolRef, lhs);
}
return;
}
@@ -3977,7 +3974,7 @@ Compressor.prototype.compress = function(node) {
decls.push(make_node(AST_If, stat, {
condition: stat.condition,
body: body || make_node(AST_EmptyStatement, stat.body),
alternative: alt
alternative: alt,
}));
decls.unshift(n, 1);
[].splice.apply(statements, decls);
@@ -4090,10 +4087,10 @@ Compressor.prototype.compress = function(node) {
if (def.scope !== scope) break;
if (def.orig.length > def.eliminated + 1) break;
if (def.orig[0].TYPE != "SymbolVar") break;
var name = make_node(AST_SymbolVar, lhs, lhs);
var name = make_node(AST_SymbolVar, lhs);
definitions.push(make_node(AST_VarDef, expr, {
name: name,
value: expr.right
value: expr.right,
}));
def.orig.push(name);
def.replaced++;
@@ -4788,12 +4785,10 @@ Compressor.prototype.compress = function(node) {
for (var key in value) if (HOP(value, key)) {
props.push(make_node(AST_ObjectKeyVal, orig, {
key: key,
value: to_node(value[key], orig)
value: to_node(value[key], orig),
}));
}
return make_node(AST_Object, orig, {
properties: props
});
return make_node(AST_Object, orig, { properties: props });
}
return make_node_from_constant(value, orig);
}
@@ -4872,9 +4867,7 @@ Compressor.prototype.compress = function(node) {
}
function arrow_first_statement() {
if (this.value) return make_node(AST_Return, this.value, {
value: this.value
});
if (this.value) return make_node(AST_Return, this.value, { value: this.value });
return skip_directives(this.body);
}
AST_Arrow.DEFMETHOD("first_statement", arrow_first_statement);
@@ -6729,8 +6722,8 @@ Compressor.prototype.compress = function(node) {
}
function to_class_expr(defcl, drop_name) {
var cl = make_node(AST_ClassExpression, defcl, defcl);
if (cl.name) cl.name = drop_name ? null : make_node(AST_SymbolClass, cl.name, cl.name);
var cl = make_node(AST_ClassExpression, defcl);
if (cl.name) cl.name = drop_name ? null : make_node(AST_SymbolClass, cl.name);
return cl;
}
@@ -6750,8 +6743,8 @@ Compressor.prototype.compress = function(node) {
ctor = AST_GeneratorFunction;
break;
}
var fn = make_node(ctor, defun, defun);
fn.name = drop_name ? null : make_node(AST_SymbolLambda, defun.name, defun.name);
var fn = make_node(ctor, defun);
fn.name = drop_name ? null : make_node(AST_SymbolLambda, defun.name);
return fn;
}
@@ -7344,8 +7337,8 @@ Compressor.prototype.compress = function(node) {
ctor = AST_GeneratorDefun;
break;
}
var defun = make_node(ctor, def, fn);
defun.name = make_node(AST_SymbolDefun, def.name, def.name);
var defun = make_node(ctor, fn);
defun.name = make_node(AST_SymbolDefun, def.name);
var name_def = def.name.scope.resolve().def_function(defun.name);
if (old_def) old_def.forEach(function(node) {
node.name = name_def.name;
@@ -7465,7 +7458,7 @@ Compressor.prototype.compress = function(node) {
[].unshift.apply(side_effects, tail.map(function(def) {
AST_Node.info("Dropping duplicated definition of variable {name} [{start}]", def.name);
var sym = def.name.definition();
var ref = make_node(AST_SymbolRef, def.name, def.name);
var ref = make_node(AST_SymbolRef, def.name);
sym.references.push(ref);
var assign = make_node(AST_Assign, def, {
operator: "=",
@@ -7571,9 +7564,7 @@ Compressor.prototype.compress = function(node) {
var value = node.object.drop_side_effect_free(compressor);
if (value) {
AST_Node.warn("Side effects in object of for-in loop [{start}]", value);
body.push(make_node(AST_SimpleStatement, node, {
body: value
}));
body.push(make_node(AST_SimpleStatement, node, { body: value }));
}
if (node.init instanceof AST_Definitions && def.orig[0] instanceof AST_SymbolCatch) {
body.push(node.init);
@@ -7625,9 +7616,7 @@ Compressor.prototype.compress = function(node) {
case 1:
return body[0];
default:
return in_list ? List.splice(body) : make_node(AST_BlockStatement, orig, {
body: body
});
return in_list ? List.splice(body) : make_node(AST_BlockStatement, orig, { body: body });
}
}
@@ -8179,7 +8168,7 @@ Compressor.prototype.compress = function(node) {
if (p instanceof AST_ForEnumeration && p.init === node) {
if (seq) return seq;
var sym = node.definitions[0].name;
return make_node(AST_SymbolRef, sym, sym);
return make_node(AST_SymbolRef, sym);
}
if (p instanceof AST_For && p.init === node) return seq;
if (!seq) return in_list ? List.skip : make_node(AST_EmptyStatement, node);
@@ -8662,7 +8651,7 @@ Compressor.prototype.compress = function(node) {
ctor = AST_GeneratorFunction;
break;
}
return make_node(ctor, exp, exp);
return make_node(ctor, exp);
}
}
return changed && exp.clone();
@@ -8800,7 +8789,7 @@ Compressor.prototype.compress = function(node) {
}
if (compressor.option("yields") && is_generator(exp)) {
var call = self.clone();
call.expression = make_node(AST_Function, exp, exp);
call.expression = make_node(AST_Function, exp);
call.expression.body = [];
var opt = call.transform(compressor);
if (opt !== call) return opt.drop_side_effect_free(compressor, first_in_statement);
@@ -8824,7 +8813,7 @@ Compressor.prototype.compress = function(node) {
return exprs && make_sequence(self, exprs.map(convert_spread));
}
if (!fn.contains_this()) {
self = make_node(AST_Call, self, self);
self = make_node(AST_Call, self);
self.expression = self.expression.clone();
self.args = self.args.slice();
}
@@ -8902,7 +8891,7 @@ Compressor.prototype.compress = function(node) {
function make_value() {
return make_sequence(self, values.map(function(node) {
if (!(node instanceof AST_ClassInit)) return node;
var fn = make_node(AST_Arrow, node, node.value);
var fn = make_node(AST_Arrow, node.value);
fn.argnames = [];
return make_node(AST_Call, node, {
expression: fn,
@@ -9075,7 +9064,7 @@ Compressor.prototype.compress = function(node) {
});
OPT(AST_While, function(self, compressor) {
return compressor.option("loops") ? make_node(AST_For, self, self).optimize(compressor) : self;
return compressor.option("loops") ? make_node(AST_For, self).optimize(compressor) : self;
});
function has_loop_control(loop, parent, type) {
@@ -9101,19 +9090,15 @@ Compressor.prototype.compress = function(node) {
body: make_node(AST_BlockStatement, self.body, {
body: [
self.body,
make_node(AST_SimpleStatement, self.condition, {
body: self.condition
make_node(AST_SimpleStatement, self.condition, { body: self.condition }),
],
}),
]
})
}).optimize(compressor);
if (!has_loop_control(self, compressor.parent())) return make_node(AST_BlockStatement, self.body, {
body: [
self.body,
make_node(AST_SimpleStatement, self.condition, {
body: self.condition
}),
]
make_node(AST_SimpleStatement, self.condition, { body: self.condition }),
],
}).optimize(compressor);
}
if (self.body instanceof AST_BlockStatement && !has_loop_control(self, compressor.parent(), AST_Continue)) {
@@ -9144,13 +9129,13 @@ Compressor.prototype.compress = function(node) {
}
self.body = trim_block(self.body, compressor.parent());
}
if (self.body instanceof AST_EmptyStatement) return make_node(AST_For, self, self).optimize(compressor);
if (self.body instanceof AST_EmptyStatement) return make_node(AST_For, self).optimize(compressor);
if (self.body instanceof AST_SimpleStatement) return make_node(AST_For, self, {
condition: make_sequence(self.condition, [
self.body.body,
self.condition
self.condition,
]),
body: make_node(AST_EmptyStatement, self)
body: make_node(AST_EmptyStatement, self),
}).optimize(compressor);
return self;
@@ -9177,28 +9162,22 @@ Compressor.prototype.compress = function(node) {
if (is_statement(self.init)) {
body.push(self.init);
} else if (self.init) {
body.push(make_node(AST_SimpleStatement, self.init, {
body: self.init
}));
body.push(make_node(AST_SimpleStatement, self.init, { body: self.init }));
}
var retain = external_target(first) || first instanceof AST_Exit;
if (self.condition && retain) {
body.push(make_node(AST_If, self, {
condition: self.condition,
body: first,
alternative: null
alternative: null,
}));
} else if (self.condition) {
body.push(make_node(AST_SimpleStatement, self.condition, {
body: self.condition
}));
body.push(make_node(AST_SimpleStatement, self.condition, { body: self.condition }));
} else if (retain) {
body.push(first);
}
extract_declarations_from_unreachable_code(compressor, self.body, body);
return make_node(AST_BlockStatement, self, {
body: body
});
return make_node(AST_BlockStatement, self, { body: body });
}
if (first instanceof AST_If) {
var ab = first_statement(first.body);
@@ -9248,9 +9227,7 @@ Compressor.prototype.compress = function(node) {
self.body.body = rest.concat(self.body.body.slice(1));
self.body = self.body.transform(compressor);
} else {
self.body = make_node(AST_BlockStatement, self.body, {
body: rest
}).transform(compressor);
self.body = make_node(AST_BlockStatement, self.body, { body: rest }).transform(compressor);
}
return if_break_in_loop(self, compressor);
}
@@ -9834,7 +9811,7 @@ Compressor.prototype.compress = function(node) {
if (exp.has_side_effects(compressor)) {
exact_match = branch;
} else {
default_branch = branch = make_node(AST_Default, branch, branch);
default_branch = branch = make_node(AST_Default, branch);
}
while (++i < len) eliminate_branch(self.body[i], branch);
}
@@ -9848,7 +9825,7 @@ Compressor.prototype.compress = function(node) {
if (!is_break(stat, compressor)) break;
statements = statements.concat(stat);
case 0:
var prev_block = make_node(AST_BlockStatement, prev, prev);
var prev_block = make_node(AST_BlockStatement, prev);
var next_block = make_node(AST_BlockStatement, branch, { body: statements });
if (prev_block.equals(next_block)) prev.body = [];
}
@@ -9927,7 +9904,7 @@ Compressor.prototype.compress = function(node) {
var exclusive = statements.length && is_break(statements[statements.length - 1], compressor);
if (exclusive) statements.pop();
if (!all(statements, no_break)) break;
var alternative = body[1].body.length && make_node(AST_BlockStatement, body[1], body[1]);
var alternative = body[1].body.length && make_node(AST_BlockStatement, body[1]);
var node = make_node(AST_If, self, {
condition: make_node(AST_Binary, self, body[0] === default_branch ? {
operator: "!==",
@@ -9992,14 +9969,14 @@ Compressor.prototype.compress = function(node) {
});
});
}
body.unshift(make_node(AST_BlockStatement, self, self).optimize(compressor));
body.unshift(make_node(AST_BlockStatement, self).optimize(compressor));
if (self.bfinally) {
body.push(make_node(AST_BlockStatement, self.bfinally, self.bfinally).optimize(compressor));
body.push(make_node(AST_BlockStatement, self.bfinally).optimize(compressor));
}
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
}
if (self.bfinally && has_declarations_only(self.bfinally)) {
var body = make_node(AST_BlockStatement, self.bfinally, self.bfinally).optimize(compressor);
var body = make_node(AST_BlockStatement, self.bfinally).optimize(compressor);
body = self.body.concat(body);
if (!self.bcatch) return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
self.body = body;
@@ -10017,7 +9994,7 @@ Compressor.prototype.compress = function(node) {
defn.name.match_symbol(function(node) {
if (node instanceof AST_SymbolDeclaration) defns.push(make_node(AST_VarDef, node, {
name: node,
value: make_value(compressor, node)
value: make_value(compressor, node),
}));
}, true);
});
@@ -10037,7 +10014,7 @@ Compressor.prototype.compress = function(node) {
var value = defn.value;
if (value) {
if (value instanceof AST_Sequence) value = value.clone();
var name = make_node(AST_SymbolRef, defn.name, defn.name);
var name = make_node(AST_SymbolRef, defn.name);
var assign = make_node(AST_Assign, defn, {
operator: "=",
left: name,
@@ -10103,7 +10080,7 @@ Compressor.prototype.compress = function(node) {
}),
value: defn.value,
});
})
}),
});
}
@@ -10410,9 +10387,7 @@ Compressor.prototype.compress = function(node) {
break EXIT;
} else {
if (consts.length > 0) {
elements.push(make_node(AST_String, self, {
value: consts.join(separator),
}));
elements.push(make_node(AST_String, self, { value: consts.join(separator) }));
consts.length = 0;
}
elements.push(el);
@@ -10497,7 +10472,7 @@ Compressor.prototype.compress = function(node) {
func = func.fixed_value();
}
if (func instanceof AST_Lambda && !func.contains_this()) {
return (self.args.length ? make_sequence(this, [
return (self.args.length ? make_sequence(self, [
self.args[0],
make_node(AST_Call, self, {
expression: exp.expression,
@@ -10525,7 +10500,7 @@ Compressor.prototype.compress = function(node) {
// new Function() ---> function(){}
if (self.args.length == 0) return make_node(AST_Function, self, {
argnames: [],
body: []
body: [],
}).init_vars(exp.scope);
if (all(self.args, function(x) {
return x instanceof AST_String;
@@ -10563,7 +10538,7 @@ Compressor.prototype.compress = function(node) {
}),
make_node(AST_String, self.args[self.args.length - 1], {
value: code.get().replace(/^\{|\}$/g, "")
})
}),
];
return self;
} catch (ex) {
@@ -10992,7 +10967,7 @@ Compressor.prototype.compress = function(node) {
scope.variables.set(name.name, def);
scope.enclosed.push(def);
if (!value) return;
var sym = make_node(AST_SymbolRef, name, name);
var sym = make_node(AST_SymbolRef, name);
def.assignments++;
def.references.push(sym);
expressions.push(make_node(AST_Assign, self, {
@@ -11021,7 +10996,7 @@ Compressor.prototype.compress = function(node) {
if (name.unused || scope.var_names().has(name.name)) {
if (value) expressions.push(value);
} else {
var symbol = make_node(AST_SymbolVar, name, name);
var symbol = make_node(AST_SymbolVar, name);
var def = name.definition();
def.orig.push(symbol);
def.eliminated++;
@@ -11044,7 +11019,7 @@ Compressor.prototype.compress = function(node) {
if (node.name.unused !== undefined) {
expressions.push(node.value);
} else {
var sym = make_node(AST_SymbolRef, node.name, node.name);
var sym = make_node(AST_SymbolRef, node.name);
node.name.definition().references.push(sym);
expressions.push(make_node(AST_Assign, node, {
operator: "=",
@@ -11073,7 +11048,7 @@ Compressor.prototype.compress = function(node) {
var def = name.definition();
def.assignments++;
def.references.push(ref);
var symbol = make_node(AST_SymbolVar, name, name);
var symbol = make_node(AST_SymbolVar, name);
def.orig.push(symbol);
def.eliminated++;
append_var(decls, expressions, symbol);
@@ -11085,7 +11060,7 @@ Compressor.prototype.compress = function(node) {
var decl_var = [], expr_fn = [], expr_var = [], expr_loop = [], exprs = [];
fn.body.filter(in_loop ? function(stat) {
if (!(stat instanceof AST_LambdaDefinition)) return true;
var name = make_node(AST_SymbolVar, stat.name, flatten_var(stat.name));
var name = make_node(AST_SymbolVar, flatten_var(stat.name));
var def = name.definition();
def.fixed = false;
def.orig.push(name);
@@ -11159,7 +11134,7 @@ Compressor.prototype.compress = function(node) {
case "Function":
case "Object":
case "RegExp":
return make_node(AST_Call, self, self).transform(compressor);
return make_node(AST_Call, self).transform(compressor);
}
}
if (compressor.option("sequences")) {
@@ -11186,11 +11161,11 @@ Compressor.prototype.compress = function(node) {
return node.operator == "&&" ? make_node(AST_Conditional, node, {
condition: node.left,
consequent: node.right.right,
alternative: value
alternative: value,
}) : make_node(AST_Conditional, node, {
condition: node.left,
consequent: value,
alternative: node.right.right
alternative: node.right.right,
});
function safe_from_assignment(node) {
@@ -11238,7 +11213,7 @@ Compressor.prototype.compress = function(node) {
if (end < expressions.length - 1) {
expressions[end] = make_node(AST_UnaryPrefix, self, {
operator: "void",
expression : expressions[end]
expression: expressions[end],
});
expressions.length = end + 1;
}
@@ -11522,7 +11497,7 @@ Compressor.prototype.compress = function(node) {
left: self.left,
right: rhs.left,
start: self.left.start,
end: rhs.left.end
end: rhs.left.end,
});
self.right = rhs.right;
if (compressor) {
@@ -11573,7 +11548,7 @@ Compressor.prototype.compress = function(node) {
AST_Node.warn("Expression always defined [{start}]", self);
return make_sequence(self, [
self.right,
make_node(self.operator == "===" ? AST_False : AST_True, self)
make_node(self.operator == "===" ? AST_False : AST_True, self),
]).optimize(compressor);
}
var is_strict_comparison = true;
@@ -11665,7 +11640,7 @@ Compressor.prototype.compress = function(node) {
if (self.left instanceof AST_String && self.left.value == "" && self.right.is_string(compressor)) {
return make_node(AST_UnaryPrefix, self, {
operator: "!",
expression: self.right
expression: self.right,
}).optimize(compressor);
}
break;
@@ -11963,17 +11938,20 @@ Compressor.prototype.compress = function(node) {
&& PRECEDENCE[self.left.operator] == PRECEDENCE[self.operator]
&& self.left.is_number(compressor)) {
if (self.left.left instanceof AST_Constant) {
var lhs = make_binary(self.left, self.operator, self.left.left, self.right, self.left.left.start, self.right.end);
self = make_binary(self, self.left.operator, try_evaluate(compressor, lhs), self.left.right);
var lhs = make_binary(self.operator, self.left.left, self.right, {
start: self.left.left.start,
end: self.right.end,
});
self = make_binary(self.left.operator, try_evaluate(compressor, lhs), self.left.right, self);
} else if (self.left.right instanceof AST_Constant) {
var op = align(self.left.operator, self.operator);
var rhs = try_evaluate(compressor, make_binary(self.left, op, self.left.right, self.right));
var rhs = try_evaluate(compressor, make_binary(op, self.left.right, self.right, self.left));
if (rhs.is_constant()
&& !(self.left.operator == "-"
&& self.right.value != 0
&& +rhs.value == 0
&& self.left.left.is_negative_zero())) {
self = make_binary(self, self.left.operator, self.left.left, rhs);
self = make_binary(self.left.operator, self.left.left, rhs, self);
}
}
}
@@ -12050,7 +12028,7 @@ Compressor.prototype.compress = function(node) {
&& self.left.value == 0) {
return (self.operator == "==" ? make_node(AST_UnaryPrefix, self, {
operator: "!",
expression: self.right
expression: self.right,
}) : self.right).optimize(compressor);
}
var indexLeft = is_indexFn(self.left);
@@ -12059,8 +12037,8 @@ Compressor.prototype.compress = function(node) {
operator: "!",
expression: make_node(AST_UnaryPrefix, self, {
operator: "~",
expression: indexLeft ? self.left : self.right
})
expression: indexLeft ? self.left : self.right,
}),
});
switch (self.operator) {
case "<":
@@ -12069,7 +12047,7 @@ Compressor.prototype.compress = function(node) {
case "!=":
node = make_node(AST_UnaryPrefix, self, {
operator: "!",
expression: node
expression: node,
});
break;
}
@@ -12104,18 +12082,18 @@ Compressor.prototype.compress = function(node) {
}
}
function make_binary(orig, op, left, right, start, end) {
function make_binary(op, left, right, orig) {
if (op == "+") {
if (!left.is_boolean(compressor) && !left.is_number(compressor)) {
left = make_node(AST_UnaryPrefix, left, {
operator: "+",
expression: left
expression: left,
});
}
if (!right.is_boolean(compressor) && !right.is_number(compressor)) {
right = make_node(AST_UnaryPrefix, right, {
operator: "+",
expression: right
expression: right,
});
}
}
@@ -12123,8 +12101,6 @@ Compressor.prototype.compress = function(node) {
operator: op,
left: left,
right: right,
start: start,
end: end
});
}
@@ -12284,7 +12260,7 @@ Compressor.prototype.compress = function(node) {
symbol_type = AST_SymbolLambda;
}
if (!(name instanceof symbol_type)) {
name = make_node(symbol_type, value.name, value.name);
name = make_node(symbol_type, value.name);
name.scope = value;
value.name = name;
lambda_def = value[def_fn_name](name);
@@ -12510,7 +12486,7 @@ Compressor.prototype.compress = function(node) {
var ref = make_node(AST_SymbolRef, self, {
name: "undefined",
scope: undef.scope,
thedef : undef
thedef: undef,
});
ref.is_undefined = true;
return ref;
@@ -12689,7 +12665,7 @@ Compressor.prototype.compress = function(node) {
var op = self.operator.slice(0, -1);
return make_node(AST_UnaryPrefix, self, {
operator: op + op,
expression: self.left
expression: self.left,
});
}
}
@@ -12971,10 +12947,8 @@ Compressor.prototype.compress = function(node) {
}
var in_bool = compressor.option("booleans") && compressor.in_boolean_context();
if (is_true(consequent)) {
if (is_false(alternative)) {
// c ? true : false ---> !!c
return booleanize(condition);
}
if (is_false(alternative)) return booleanize(condition);
// c ? true : x ---> !!c || x
return make_node(AST_Binary, self, {
operator: "||",
@@ -12983,10 +12957,8 @@ Compressor.prototype.compress = function(node) {
});
}
if (is_false(consequent)) {
if (is_true(alternative)) {
// c ? false : true ---> !c
return booleanize(condition.negate(compressor));
}
if (is_true(alternative)) return booleanize(condition.negate(compressor));
// c ? false : x ---> !c && x
return make_node(AST_Binary, self, {
operator: "&&",
@@ -12994,22 +12966,18 @@ Compressor.prototype.compress = function(node) {
right: alternative,
});
}
if (is_true(alternative)) {
// c ? x : true ---> !c || x
return make_node(AST_Binary, self, {
if (is_true(alternative)) return make_node(AST_Binary, self, {
operator: "||",
left: booleanize(condition.negate(compressor)),
right: consequent,
});
}
if (is_false(alternative)) {
// c ? x : false ---> !!c && x
return make_node(AST_Binary, self, {
if (is_false(alternative)) return make_node(AST_Binary, self, {
operator: "&&",
left: booleanize(condition),
right: consequent,
});
}
if (compressor.option("typeofs")) mark_locally_defined(condition, consequent, alternative);
return self;
@@ -13018,7 +12986,7 @@ Compressor.prototype.compress = function(node) {
// !!expression
return make_node(AST_UnaryPrefix, node, {
operator: "!",
expression: node.negate(compressor)
expression: node.negate(compressor),
});
}
@@ -13247,7 +13215,7 @@ Compressor.prototype.compress = function(node) {
return node.name === argname.name;
}, fn.argnames) === argname) {
if (assigned) def.reassigned--;
var sym = make_node(AST_SymbolRef, self, argname);
var sym = make_node(AST_SymbolRef, argname);
sym.reference();
argname.unused = undefined;
return sym;
@@ -13399,7 +13367,7 @@ Compressor.prototype.compress = function(node) {
} else {
return;
}
value = make_node(ctor, value, value);
value = make_node(ctor, value);
}
values.push(value);
}
@@ -13612,7 +13580,7 @@ Compressor.prototype.compress = function(node) {
}
function init_ref(compressor, name) {
var sym = make_node(AST_SymbolRef, name, name);
var sym = make_node(AST_SymbolRef, name);
var assign = make_node(AST_Assign, name, {
operator: "=",
left: sym,
@@ -13868,7 +13836,7 @@ Compressor.prototype.compress = function(node) {
});
[].push.apply(body, in_loop ? fn.body.filter(function(stat) {
if (!(stat instanceof AST_LambdaDefinition)) return true;
var name = make_node(AST_SymbolVar, stat.name, flatten_var(stat.name));
var name = make_node(AST_SymbolVar, flatten_var(stat.name));
var def = name.definition();
def.fixed = false;
def.orig.push(name);
@@ -14068,10 +14036,10 @@ Compressor.prototype.compress = function(node) {
var fn = call.expression;
switch (fn.CTOR) {
case AST_AsyncGeneratorFunction:
fn = make_node(AST_AsyncFunction, fn, fn);
fn = make_node(AST_AsyncFunction, fn);
break;
case AST_GeneratorFunction:
fn = make_node(AST_Function, fn, fn);
fn = make_node(AST_Function, fn);
break;
default:
return;

View File

@@ -406,10 +406,11 @@ function OutputStream(options) {
print(";");
}
function with_block(cont) {
function with_block(cont, end) {
print("{");
newline();
with_indent(cont);
add_mapping(end);
indent();
print("}");
}
@@ -953,7 +954,7 @@ function OutputStream(options) {
if (self.body.length > 0) {
output.with_block(function() {
display_body(self.body, false, output, allow_directives);
});
}, self.end);
} else print_braced_empty(self, output);
}
DEFPRINT(AST_BlockStatement, function(output) {
@@ -1088,7 +1089,7 @@ function OutputStream(options) {
print_entry(i);
}
output.newline();
});
}, self.end);
output.space();
output.print("from");
output.space();
@@ -1352,7 +1353,7 @@ function OutputStream(options) {
if (i < last && branch.body.length > 0)
output.newline();
});
});
}, self.end);
});
function print_branch_body(self, output) {
output.newline();
@@ -1472,14 +1473,12 @@ function OutputStream(options) {
output.print("/*@__PURE__*/");
}
function print_call_args(self, output) {
if (self.expression instanceof AST_Call || self.expression instanceof AST_Lambda) {
output.add_mapping(self.start);
}
output.with_parens(function() {
self.args.forEach(function(expr, i) {
if (i) output.comma();
expr.print(output);
});
output.add_mapping(self.end);
});
}
DEFPRINT(AST_Call, function(output) {
@@ -1515,10 +1514,11 @@ function OutputStream(options) {
expr.print(output);
var prop = self.property;
if (output.option("ie") && RESERVED_WORDS[prop]) {
output.print(self.optional ? "?.[" : "[");
if (self.optional) output.print("?.");
output.with_square(function() {
output.add_mapping(self.end);
output.print_string(prop);
output.print("]");
});
} else {
if (expr instanceof AST_Number && !/[ex.)]/i.test(output.last())) output.print(".");
output.print(self.optional ? "?." : ".");
@@ -1530,9 +1530,10 @@ function OutputStream(options) {
DEFPRINT(AST_Sub, function(output) {
var self = this;
self.expression.print(output);
output.print(self.optional ? "?.[" : "[");
if (self.optional) output.print("?.");
output.with_square(function() {
self.property.print(output);
output.print("]");
});
});
DEFPRINT(AST_Spread, function(output) {
output.print("...");
@@ -1551,8 +1552,10 @@ function OutputStream(options) {
exp.print(output);
});
DEFPRINT(AST_UnaryPostfix, function(output) {
this.expression.print(output);
output.print(this.operator);
var self = this;
self.expression.print(output);
output.add_mapping(self.end);
output.print(self.operator);
});
DEFPRINT(AST_Binary, function(output) {
var self = this;
@@ -1645,7 +1648,8 @@ function OutputStream(options) {
value.print(output);
});
DEFPRINT(AST_DestructuredObject, function(output) {
var props = this.properties, len = props.length, rest = this.rest;
var self = this;
var props = self.properties, len = props.length, rest = self.rest;
if (len || rest) output.with_block(function() {
props.forEach(function(prop, i) {
if (i) {
@@ -1665,8 +1669,8 @@ function OutputStream(options) {
rest.print(output);
}
output.newline();
});
else print_braced_empty(this, output);
}, self.end);
else print_braced_empty(self, output);
});
function print_properties(self, output, no_comma) {
var props = self.properties;
@@ -1680,7 +1684,7 @@ function OutputStream(options) {
prop.print(output);
});
output.newline();
});
}, self.end);
else print_braced_empty(self, output);
}
DEFPRINT(AST_Object, function(output) {
@@ -1890,7 +1894,7 @@ function OutputStream(options) {
output.indent();
stmt.print(output);
output.newline();
});
}, stmt.end);
}
/* -----[ source map generators ]----- */
@@ -1913,22 +1917,27 @@ function OutputStream(options) {
// or if we should add even more.
DEFMAP([
AST_Array,
AST_Await,
AST_BlockStatement,
AST_Catch,
AST_Constant,
AST_Debugger,
AST_Definitions,
AST_Destructured,
AST_Directive,
AST_Finally,
AST_Jump,
AST_Lambda,
AST_New,
AST_Object,
AST_Spread,
AST_StatementWithBody,
AST_Symbol,
AST_Switch,
AST_SwitchBranch,
AST_Try,
AST_UnaryPrefix,
AST_Yield,
], function(output) {
output.add_mapping(this.start);
});

View File

@@ -38,4 +38,4 @@ var _require = require("bar"), foo = _require.foo;
var _require2 = require("world"), hello = _require2.hello;
foo.x.apply(foo, _toConsumableArray(foo.y(hello.z)));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtmb299ID0gcmVxdWlyZShcImJhclwiKTtcbmNvbnN0IHtoZWxsb30gPSByZXF1aXJlKFwid29ybGRcIik7XG5cbmZvby54KC4uLmZvby55KGhlbGxvLnopKTtcbiJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiZm9vIiwiaGVsbG8iLCJ4IiwiYXBwbHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJ5IiwieiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFBY0EsUUFBUSxRQUFmQyxNLFNBQUFBOztBLGdCQUNTRCxRQUFRLFVBQWpCRSxRLFVBQUFBOztBQUVQRCxJQUFJRSxFQUFKQyxNQUFBSCxLQUFHSSxtQkFBTUosSUFBSUssRUFBRUosTUFBTUsifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtmb299ID0gcmVxdWlyZShcImJhclwiKTtcbmNvbnN0IHtoZWxsb30gPSByZXF1aXJlKFwid29ybGRcIik7XG5cbmZvby54KC4uLmZvby55KGhlbGxvLnopKTtcbiJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiZm9vIiwiaGVsbG8iLCJ4IiwiYXBwbHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJ5IiwieiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFBY0EsUUFBUSxLQUFELEdBQWRDLE0sU0FBQUE7O0EsZ0JBQ1NELFFBQVEsT0FBRCxHQUFoQkUsUSxVQUFBQTs7QUFFUEQsSUFBSUUsRUFBSkMsTUFBQUgsS0FBR0ksbUJBQU1KLElBQUlLLEVBQUVKLE1BQU1LLENBQVosQ0FBTixDQUFBIn0=

View File

@@ -1,2 +1,2 @@
console.log(3);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZvbyB7IGNvbnN0cnVjdG9yKCl7Y29uc29sZS5sb2coMSsyKTt9IH0gbmV3IEZvbygpO1xuIl0sIm5hbWVzIjpbImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUEwQkEsUUFBUUMsSUFBSSJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZvbyB7IGNvbnN0cnVjdG9yKCl7Y29uc29sZS5sb2coMSsyKTt9IH0gbmV3IEZvbygpO1xuIl0sIm5hbWVzIjpbImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUEwQkEsUUFBUUMsSUFBSSxDQUFHIn0=

View File

@@ -2,4 +2,4 @@ function test(a){
"aaaaaaaaaaaaaaaa";
a(err,data),a(err,
data)}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjAiXSwibmFtZXMiOlsidGVzdCIsImNhbGxiYWNrIiwiZXJyIiwiZGF0YSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0E7SEFBS0M7QUFFVkE7aEJBQVNDLElBQUtDLE1BQ2RGLEVBQVNDLElBQUtDIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjAiXSwibmFtZXMiOlsidGVzdCIsImNhbGxiYWNrIiwiZXJyIiwiZGF0YSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0E7SEFBS0MsR0FDVjtBQUNBQTtoQkFBU0MsSUFBS0MsSUFBSSxFQUNsQkYsRUFBU0MsSUFBS0MsSUFBSSxDQUN0QiJ9

View File

@@ -1,2 +1,2 @@
console.log(3);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZvbyB7IGNvbnN0cnVjdG9yKCl7Y29uc29sZS5sb2coMSsyKTt9IH0gbmV3IEZvbygpO1xuIl0sIm5hbWVzIjpbImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUEwQkEsUUFBUUMsSUFBSSJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZvbyB7IGNvbnN0cnVjdG9yKCl7Y29uc29sZS5sb2coMSsyKTt9IH0gbmV3IEZvbygpO1xuIl0sIm5hbWVzIjpbImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUEwQkEsUUFBUUMsSUFBSSxDQUFHIn0=

View File

@@ -143,7 +143,7 @@ describe("bin/uglifyjs", function() {
if (err) throw err;
assert.strictEqual(stdout, [
"var bar=function(){function foo(bar){return bar}return foo}();",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMTMyMy9zYW1wbGUuanMiXSwibmFtZXMiOlsiYmFyIiwiZm9vIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxJQUFNLFdBQ04sU0FBU0MsSUFBS0QsS0FDVixPQUFPQSxJQUdYLE9BQU9DLElBTEQifQ==",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMTMyMy9zYW1wbGUuanMiXSwibmFtZXMiOlsiYmFyIiwiZm9vIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxJQUFNLFdBQ04sU0FBU0MsSUFBS0QsS0FDVixPQUFPQSxHQUNYLENBRUEsT0FBT0MsR0FDVixFQUFFIn0=",
"",
].join("\n"));
done();
@@ -330,7 +330,7 @@ describe("bin/uglifyjs", function() {
if (err) throw err;
assert.strictEqual(stdout, [
"var bar=function(){function foo(bar){return bar}return foo}();",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMTMyMy9zYW1wbGUuanMiXSwibmFtZXMiOlsiYmFyIiwiZm9vIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxJQUFNLFdBQ04sU0FBU0MsSUFBS0QsS0FDVixPQUFPQSxJQUdYLE9BQU9DLElBTEQifQ==",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMTMyMy9zYW1wbGUuanMiXSwibmFtZXMiOlsiYmFyIiwiZm9vIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxJQUFNLFdBQ04sU0FBU0MsSUFBS0QsS0FDVixPQUFPQSxHQUNYLENBRUEsT0FBT0MsR0FDVixFQUFFIn0=",
"",
].join("\n"));
var stderrLines = stderr.split("\n");
@@ -350,7 +350,7 @@ describe("bin/uglifyjs", function() {
if (err) throw err;
assert.strictEqual(stdout, [
"var Foo=function Foo(){console.log(1+2)};new Foo;var bar=function(){function foo(bar){return bar}return foo}();",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIiwidGVzdC9pbnB1dC9pc3N1ZS0xMzIzL3NhbXBsZS5qcyJdLCJuYW1lcyI6WyJGb28iLCJjb25zb2xlIiwibG9nIiwiYmFyIiwiZm9vIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxJQUFJLFNBQUVBLE1BQWNDLFFBQVFDLElBQUksRUFBRSxJQUFPLElBQUlGLElDQW5ELElBQUlHLElBQU0sV0FDTixTQUFTQyxJQUFLRCxLQUNWLE9BQU9BLElBR1gsT0FBT0MsSUFMRCJ9",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIiwidGVzdC9pbnB1dC9pc3N1ZS0xMzIzL3NhbXBsZS5qcyJdLCJuYW1lcyI6WyJGb28iLCJjb25zb2xlIiwibG9nIiwiYmFyIiwiZm9vIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxJQUFJLFNBQUVBLE1BQWNDLFFBQVFDLElBQUksRUFBRSxDQUFDLENBQUUsRUFBSSxJQUFJRixJQ0FuRCxJQUFJRyxJQUFNLFdBQ04sU0FBU0MsSUFBS0QsS0FDVixPQUFPQSxHQUNYLENBRUEsT0FBT0MsR0FDVixFQUFFIn0=",
"",
].join("\n"));
var stderrLines = stderr.split("\n");
@@ -791,7 +791,7 @@ describe("bin/uglifyjs", function() {
if (err) throw err;
assert.strictEqual(stdout, [
'"use strict";var foo=function foo(x){return"foo "+x};console.log(foo("bar"));',
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImZvbyIsIngiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiYUFBQSxJQUFJQSxJQUFNLFNBQU5BLElBQU1DLEdBQUEsTUFBSyxPQUFTQSxHQUN4QkMsUUFBUUMsSUFBSUgsSUFBSSJ9",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImZvbyIsIngiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiYUFBQSxJQUFJQSxJQUFNLFNBQU5BLElBQU1DLEdBQUEsTUFBSyxPQUFTQSxDQUFkLEVBQ1ZDLFFBQVFDLElBQUlILElBQUksS0FBSixDQUFaIn0=",
""
].join("\n"));
done();
@@ -814,7 +814,7 @@ describe("bin/uglifyjs", function() {
if (err) throw err;
assert.strictEqual(stdout, [
'function foo(){return function(){console.log("PASS")}}foo()();',
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMjMxMC9pbnB1dC5qcyJdLCJuYW1lcyI6WyJmb28iLCJjb25zb2xlIiwibG9nIiwiZiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFDTCxPQUFPLFdBQ0hDLFFBQVFDLElBQUksU0FLUkYsS0FDUkcifQ==",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaW5wdXQvaXNzdWUtMjMxMC9pbnB1dC5qcyJdLCJuYW1lcyI6WyJmb28iLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUNMLE9BQU8sV0FDSEMsUUFBUUMsSUFBSSxNQUFNLENBQ3RCLENBQ0osQ0FHWUYsSUFBSSxFQUNWIn0=",
""
].join("\n"));
done();

View File

@@ -23,7 +23,7 @@ function get_map() {
"names": [],
"mappings": ";;AAAA,IAAI,MAAM,SAAN,GAAM;AAAA,SAAK,SAAS,CAAd;AAAA,CAAV;AACA,QAAQ,GAAR,CAAY,IAAI,KAAJ,CAAZ",
"file": "bundle.js",
"sourcesContent": ["let foo = x => \"foo \" + x;\nconsole.log(foo(\"bar\"));"]
"sourcesContent": [ "let foo = x => \"foo \" + x;\nconsole.log(foo(\"bar\"));" ],
};
}
@@ -42,7 +42,7 @@ function prepare_map(sourceMap) {
sourceMap: {
content: sourceMap,
includeSources: true,
}
},
});
if (result.error) throw result.error;
return JSON.parse(result.map);
@@ -112,7 +112,7 @@ describe("sourcemaps", function() {
});
if (result.error) throw result.error;
assert.strictEqual(result.code, "class A{static P=42;set#q(s){}}");
assert.strictEqual(result.map, '{"version":3,"sources":["0"],"names":["A","P","#q","v"],"mappings":"MAAMA,EACFC,SAAW,GACXC,MAAOC"}');
assert.strictEqual(result.map, '{"version":3,"sources":["0"],"names":["A","P","#q","v"],"mappings":"MAAMA,EACFC,SAAW,GACXC,MAAOC,IACX"}');
});
it("Should mark array/object literals", function() {
var result = UglifyJS.minify([
@@ -124,7 +124,7 @@ describe("sourcemaps", function() {
});
if (result.error) throw result.error;
assert.strictEqual(result.code, "({}).wat([]);");
assert.strictEqual(result.map, '{"version":3,"sources":["0"],"names":["wat"],"mappings":"CAAU,IACNA,IAAI"}');
assert.strictEqual(result.map, '{"version":3,"sources":["0"],"names":["wat"],"mappings":"CAAU,IACNA,IAAI,EAAE"}');
});
it("Should give correct sourceRoot", function() {
var code = "console.log(42);";
@@ -135,7 +135,7 @@ describe("sourcemaps", function() {
});
if (result.error) throw result.error;
assert.strictEqual(result.code, code);
assert.strictEqual(result.map, '{"version":3,"sourceRoot":"//foo.bar/","sources":["0"],"names":["console","log"],"mappings":"AAAAA,QAAQC,IAAI"}');
assert.strictEqual(result.map, '{"version":3,"sourceRoot":"//foo.bar/","sources":["0"],"names":["console","log"],"mappings":"AAAAA,QAAQC,IAAI,EAAE"}');
});
it("Should produce same source map with DOS or UNIX line endings", function() {
var code = [
@@ -160,8 +160,8 @@ describe("sourcemaps", function() {
sourceMap: {
content: read("test/input/issue-1236/simple.js.map"),
filename: "simple.min.js",
includeSources: true
}
includeSources: true,
},
});
if (result.error) throw result.error;
var map = JSON.parse(result.map);
@@ -175,8 +175,8 @@ describe("sourcemaps", function() {
sourceMap: {
content: "inline",
includeSources: true,
url: "inline"
}
url: "inline",
},
});
if (result.error) throw result.error;
assert.strictEqual(result.code + "\n", read("test/input/issue-520/output.js"));
@@ -185,7 +185,7 @@ describe("sourcemaps", function() {
var result = UglifyJS.minify(read("test/input/issue-1323/sample.js"), {
mangle: false,
sourceMap: {
content: "inline"
content: "inline",
},
warnings: true,
});
@@ -206,7 +206,7 @@ describe("sourcemaps", function() {
if (result.error) throw result.error;
assert.strictEqual(result.code, [
"var Foo=function(){console.log(3)},bar=(new Foo,function(o){return o});",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIiwiMSJdLCJuYW1lcyI6WyJGb28iLCJjb25zb2xlIiwibG9nIiwiYmFyIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxJQUFJLFdBQWdCQyxRQUFRQyxJQUFJLElDQWxDQyxLREEyQyxJQUFJSCxJQ0MvQyxTQUFjRyxHQUNWLE9BQU9BIn0=",
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIiwiMSJdLCJuYW1lcyI6WyJGb28iLCJjb25zb2xlIiwibG9nIiwiYmFyIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxJQUFJLFdBQWdCQyxRQUFRQyxJQUFJLENBQUcsQ0FBRSxFQ0F2Q0MsS0RBMkMsSUFBSUgsSUNDL0MsU0FBY0csR0FDVixPQUFPQSxDQUNYIn0=",
].join("\n"));
assert.deepEqual(result.warnings, [ "WARN: inline source map not found: 1" ]);
});
@@ -239,8 +239,8 @@ describe("sourcemaps", function() {
sourceMap: {
content: "inline",
includeSources: true,
url: "inline"
}
url: "inline",
},
});
if (result.error) throw result.error;
assert.strictEqual(result.code + "\n", read("test/input/issue-3294/output.js"));
@@ -255,7 +255,7 @@ describe("sourcemaps", function() {
});
if (result.error) throw result.error;
assert.strictEqual(result.code, '(function(){console.log("hello")}).call(this);');
assert.strictEqual(result.map, '{"version":3,"sources":["main.coffee"],"names":["console","log"],"mappings":"CAAA,WAAAA,QAAQC,IAAI"}');
assert.strictEqual(result.map, '{"version":3,"sources":["main.coffee"],"names":["console","log"],"mappings":"CAAA,WAAAA,QAAQC,IAAI,OAAZ"}');
});
it("Should not overwrite existing sourcesContent", function() {
var result = UglifyJS.minify({
@@ -302,7 +302,7 @@ describe("sourcemaps", function() {
if (result.error) throw result.error;
var code = result.code;
assert.strictEqual(code, "var a=function(n){return n};\n" +
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjAiXSwibmFtZXMiOlsiYSIsImZvbyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsRUFBSSxTQUFTQyxHQUFPLE9BQU9BIn0=");
"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjAiXSwibmFtZXMiOlsiYSIsImZvbyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsRUFBSSxTQUFTQyxHQUFPLE9BQU9BLENBQUsifQ==");
});
it("Should not append source map to output js when sourceMapInline is not enabled", function() {
var result = UglifyJS.minify('var a = function(foo) { return foo; };');