Age | Commit message (Collapse) | Author |
|
Fix #702
|
|
(should not set newline_before)
Fix #693
|
|
(even if --mangle-props is not there)
|
|
|
|
Fix #687
|
|
This works almost exactly like `expect`, except that you pass a literal string
of which the result is compared with the generated output.
|
|
* Specify the files to install in package.json
* Add missing properties
* Follow `npm init`'s scheme
|
|
Per https://github.com/mishoo/UglifyJS2/commit/0262b4244c13b3ef148bf096874847aea84b93e5 - if you're going to stop testing on 0.8, you should be testing on 0.12.
Also allow failures on unstable nodes and "older than two latest" `io.js` versions, and enable "sudo: false" which makes tests run faster.
|
|
|
|
Don't move the condition on the right side of an assignment when
the left side may have side effects.
Fix #677
|
|
(works around a bug in our tree walker which, while cloning nodes, breaks
references between labeled statements and break/continue labels)
|
|
Close #670
|
|
Document passing source maps directly to minify() using inSourceMap
|
|
|
|
|
|
Fix long options
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
need to check whether the literal has any side effects before replacing that
with `false`.
|
|
do create the sequence even if the stat list is bigger than 2000 statements,
but limit the sequence itself to 2000 expressions.
Ref #414
|
|
It hardly saves any bytes for a sequence so long, and it risks blowing the
stack with the recursive Seq functions.
Ref #414
|
|
|
|
|
|
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
|
|
|
|
|
|
tools/domprops.json
|
|
|
|
|
|
(they should be treated as whitespace)
|
|
(they should be treated as whitespace)
|
|
|
|
|
|
|
|
... and support storing there variable names as well, to help with multiple
invocations when mangling toplevel.
|
|
Even if not “defined”, do mangle if name exists in the cache.
|
|
|
|
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.
|
|
|
|
It would be nice to have access to the filename of the file that includes the code that causes a JavaScript error. This is especially handy if uglifying multiple files at once.
Only a small change is needed for this to happen as it's already available in the function that throws the error.
|
|
|
|
In 992b6b9fcce47ca67ecb14675f10b172ce7a99b5 unit test broke (which I missed). This was due to undeclared variables not being side-effects free.
However, since they're really not side-effect free, just declare them in the test cases.
|
|
See #637. This does not produce the optimal result, but it does prevent the removal of non-side-effect-free code.
|
|
|
|
Because the base reference can be an member expression as well, we have to dig a bit deeper to find the leftmost base reference.
Fixes #451
|