aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2015-10-27fixes #845: \v escaping should be restricted to "screw_ie8" modeMichael Ficarra
2015-10-20Fix #836Fábio Santos
2015-10-15Make_string was missing \v and wasnt reversing vertical tabs even though ↵startswithaj
read_escaped_char coverts them
2015-10-13Fix other operator output related to <!-- or -->kzc
2015-10-12Only encode <!-- and --> in strings when inline_scriptMihai Bazon
2015-10-12Output `-- >` instead of `-->` in expressions. Escape `<!--` and `-->` ↵kzc
within string literals.
2015-10-07Fix handling of "use asm" when no command line flags are passed to uglifyjs. ↵kzc
SCOPE_IS_NEEDED is unconditionally true now. Refactored floating point literal parsing to be more in keeping with the AST class design.
2015-10-07Add proper support for "use asm"; blocks. Disable -c optimization within ↵kzc
"use asm"; sections and preserve floating point literals in their original form. Non-asm.js sections are optimized as before. Asm.js sections can still be mangled and minified of whitespace. No special command line flags are required.
2015-10-06Implement shebang supportAnthony Van de Gejuchte
2015-09-24Fix mozilla-ast after module loading changesMihai Bazon
Need to explicitly qualify stuff now, since it's not evaluated in some global scope. Ref #636
2015-09-24No longer use `vm` to load code.Mihai Bazon
Improves performance 2x on node > 0.10. Ref #636
2015-09-24Fix wrap_commonjs to include code firstMihai Bazon
(code could have directives, i.e. "use strict")
2015-09-14Control keeping function arguments with a single optionVille Lautanala
2015-08-27Fix bad parsing of `new new x()()` constructsRichard van Velzen
Fixes #739
2015-08-25Don't change sequences that influence lexical binding in callsRichard van Velzen
Fixes #782
2015-08-10[Fix] --define replaces SymbolRefs in LHS of assignmentsChristopher Chedeau
See #208 for context
2015-08-05Fix mangling of property names which overwrite unmangleable propertiesRichard van Velzen
Fixes #747.
2015-07-30Fix semicolon printing when restricting max line lengthRichard van Velzen
Fixes #755
2015-07-29Re-use the caught exception's error message in the parse error call.Chris Cowan
2015-07-29Give a good error message if an invalid regular expression is found.Chris Cowan
2015-07-29Advanced way to specify if a function call might have side effects. #400thorn0
2015-07-22Don't attempt to negate non-boolean AST_BinaryMihai Bazon
Fix #751
2015-07-20Merge pull request #735 from kzc/masterMihai Bazon
optimizations for && and || where left side is constant expression
2015-06-30Don't drop parens in a * (b * c). Close #744Mihai Bazon
2015-06-14operator && and || optimization: add "else" before "if" as intendedkzc
2015-06-11optimizations for && and || where left side is constant expressionkzc
2015-06-09Add --mangle-regex optionJoao Carlos
2015-05-20Treat \uFEFF as whitespace.Mihai Bazon
Fix #714
2015-05-18Fix compressing conditionalsMihai Bazon
Only transform foo() ? EXP(x) : EXP(y) into EXP(foo() ? x : y) if EXP has no side effects. Fix #710
2015-05-13fix again reserved propsMihai Bazon
2015-05-07Make reserved names take priority over the name cacheMihai Bazon
2015-05-05Only drop the BOM when it's the first character.Mihai Bazon
Close #704
2015-05-04Fix blank lines in the output.Mihai Bazon
The issue was more obvious when max_line_len has a small value, rather than the default 32K characters. A blank line showed up after most statements.
2015-05-04Avoid spurious brackets when dropping unused varsMihai Bazon
Fix #702
2015-04-23Fix parsing strings with literal DOS newlinesMihai Bazon
(should not set newline_before) Fix #693
2015-04-22If name_cache is specified, do rename cached propertiesMihai Bazon
(even if --mangle-props is not there)
2015-04-17Drop NaN -> 0/0 transformation.Mihai Bazon
Fix #687
2015-04-13Fix compression of conditionalsMihai Bazon
Don't move the condition on the right side of an assignment when the left side may have side effects. Fix #677
2015-04-10Use the `before` visitor in mangle propsMihai Bazon
(works around a bug in our tree walker which, while cloning nodes, breaks references between labeled statements and break/continue labels)
2015-03-29Merge branch 'propmangle'Mihai Bazon
2015-03-23Fix compressing `![foo()];` as a statementMihai Bazon
need to check whether the literal has any side effects before replacing that with `false`.
2015-03-22[sequencesize] Actually even better:Mihai Bazon
do create the sequence even if the stat list is bigger than 2000 statements, but limit the sequence itself to 2000 expressions. Ref #414
2015-03-22Avoid sequencesize for more than 2000 statements.Mihai Bazon
It hardly saves any bytes for a sequence so long, and it risks blowing the stack with the recursive Seq functions. Ref #414
2015-03-22Add start/end nodes for NaN/Infinity transformationsMihai Bazon
2015-03-20Keep unused function arguments by defaultMihai Bazon
Discarding unused function arguments affects function.length, which can lead to some hard to debug issues. This optimization is now done only in "unsafe mode". Fix #121
2015-03-18Fix parsing for U+2028 / U+2029Mihai Bazon
(they should be treated as whitespace)
2015-03-18Fix parsing for U+2028 / U+2029Mihai Bazon
(they should be treated as whitespace)
2015-03-16rename --prop-cache to --name-cacheMihai Bazon
... and support storing there variable names as well, to help with multiple invocations when mangling toplevel.
2015-03-16Fix prop manglingMihai Bazon
Even if not “defined”, do mangle if name exists in the cache.
2015-03-14Add property name manglerMihai Bazon
We only touch properties that are present in an object literal, or which are assigned to. Example: x = { foo: 1 }; x.bar = 2; x["baz"] = 3; x[cond ? "qwe" : "asd"] = 4; console.log(x.stuff); The names "foo", "bar", "baz", "qwe" and "asd" will be mangled, and the resulting mangled names will be used for the same properties throughout the code. The "stuff" will not be, since it's just referenced but never assigned to. This *will* break most of the code out there, but could work on carefully written code: do not use eval, do not define methods or properties by walking an array of names, etc. Also, a comprehensive list of exclusions needs to be passed, to avoid mangling properties that are standard in JavaScript, DOM, used in external libraries etc.