Richard van Velzen [Tue, 25 Aug 2015 08:53:35 +0000 (10:53 +0200)]
Don't change sequences that influence lexical binding in calls
Fixes #782
Richard van Velzen [Mon, 10 Aug 2015 18:29:37 +0000 (20:29 +0200)]
Merge pull request #767 from vjeux/208
[Fix] --define replaces SymbolRefs in LHS of assignments
Christopher Chedeau [Mon, 10 Aug 2015 18:22:36 +0000 (11:22 -0700)]
[Fix] --define replaces SymbolRefs in LHS of assignments
See #208 for context
Richard van Velzen [Fri, 7 Aug 2015 12:12:41 +0000 (14:12 +0200)]
Merge pull request #736 from AlbertoGP/master
fromString option, use index from argument array for filename instead of "?"
Richard van Velzen [Fri, 7 Aug 2015 12:11:50 +0000 (14:11 +0200)]
Merge pull request #729 from DrewML/keep_fnames_docs
Add keep_fnames compressor option to README.md
Richard van Velzen [Fri, 31 Jul 2015 13:56:33 +0000 (15:56 +0200)]
Fix mangling of property names which overwrite unmangleable properties
Fixes #747.
Richard van Velzen [Wed, 5 Aug 2015 19:17:42 +0000 (21:17 +0200)]
Merge pull request #753 from Surgo/master
Support wrap and exportAll options for node.js tools.
Mihai Bazon [Thu, 30 Jul 2015 14:25:13 +0000 (17:25 +0300)]
Merge pull request #757 from rvanvelzen/semicolon-fix
Fix semicolon printing when restricting max line length
Richard van Velzen [Wed, 29 Jul 2015 15:57:18 +0000 (17:57 +0200)]
Fix semicolon printing when restricting max line length
Fixes #755
Richard van Velzen [Thu, 30 Jul 2015 13:57:18 +0000 (15:57 +0200)]
Revert "Fix semicolon printing when restricting max line length"
This reverts commit
170e8b519e64463a39d293480e52f97b64d8ab89.
Richard van Velzen [Wed, 29 Jul 2015 15:57:18 +0000 (17:57 +0200)]
Fix semicolon printing when restricting max line length
Fixes #755
Richard van Velzen [Wed, 29 Jul 2015 13:24:45 +0000 (15:24 +0200)]
Replace util.puts in run-tests with console.log
See
d2dda34b2a8de310f26a26e58ed28275ba5ecc7f
XhmikosR [Tue, 14 Apr 2015 20:17:41 +0000 (23:17 +0300)]
Make node.js 0.8 the minimum supported version.
Node.js 0.4 and 0.6 are ancient; things don't work there.
Update Travis CI configuration accordingly.
Note, that the npm update in Travis is needed for 0.8 only at the moment.
Chris Cowan [Thu, 14 May 2015 19:27:56 +0000 (12:27 -0700)]
Re-use the caught exception's error message in the parse error call.
Chris Cowan [Thu, 14 May 2015 19:03:54 +0000 (12:03 -0700)]
Give a good error message if an invalid regular expression is found.
thorn0 [Sat, 18 Jan 2014 13:16:43 +0000 (15:16 +0200)]
Advanced way to specify if a function call might have side effects. #400
Kosei Kitahara [Tue, 28 Jul 2015 12:36:22 +0000 (21:36 +0900)]
Support wrap and exportAll options.
Mihai Bazon [Wed, 22 Jul 2015 13:58:09 +0000 (16:58 +0300)]
v2.4.24
Mihai Bazon [Wed, 22 Jul 2015 13:53:25 +0000 (16:53 +0300)]
Don't attempt to negate non-boolean AST_Binary
Fix #751
Mihai Bazon [Mon, 20 Jul 2015 06:58:01 +0000 (09:58 +0300)]
Merge pull request #735 from kzc/master
optimizations for && and || where left side is constant expression
Mihai Bazon [Tue, 30 Jun 2015 07:07:13 +0000 (10:07 +0300)]
Don't drop parens in a * (b * c). Close #744
Alberto González Palomo [Mon, 15 Jun 2015 16:03:06 +0000 (18:03 +0200)]
fromString option, use index from argument array for filename instead of "?"
The index allows the caller to map things like parse errors back to the
code chunk where they appeared.
kzc [Sun, 14 Jun 2015 21:45:19 +0000 (17:45 -0400)]
spacing
kzc [Sun, 14 Jun 2015 21:44:26 +0000 (17:44 -0400)]
operator && and || optimization: add "else" before "if" as intended
kzc [Fri, 12 Jun 2015 03:22:38 +0000 (23:22 -0400)]
optimizations for && and || where left side is constant expression
Mihai Bazon [Tue, 9 Jun 2015 13:33:21 +0000 (16:33 +0300)]
Merge pull request #733 from jcxplorer/add-mangle-regex-option
Add --mangle-regex option
Joao Carlos [Tue, 9 Jun 2015 12:14:41 +0000 (15:14 +0300)]
Change --mangle-regex to accept a full regex
Joao Carlos [Tue, 9 Jun 2015 11:31:49 +0000 (14:31 +0300)]
Show descriptive error when --mangle-regex is invalid
Joao Carlos [Tue, 9 Jun 2015 10:21:22 +0000 (13:21 +0300)]
Add --mangle-regex option
Andrew Levine [Tue, 2 Jun 2015 20:32:10 +0000 (15:32 -0500)]
Add keep_fnames compressor option to README.md
Mihai Bazon [Wed, 20 May 2015 14:48:30 +0000 (17:48 +0300)]
v2.4.23
Mihai Bazon [Wed, 20 May 2015 13:17:46 +0000 (16:17 +0300)]
Treat \uFEFF as whitespace.
Fix #714
Mihai Bazon [Mon, 18 May 2015 10:58:25 +0000 (13:58 +0300)]
v2.4.22
Mihai Bazon [Mon, 18 May 2015 10:56:04 +0000 (13:56 +0300)]
Fix compressing conditionals
Only transform foo() ? EXP(x) : EXP(y) into EXP(foo() ? x : y) if EXP has no
side effects.
Fix #710
Mihai Bazon [Wed, 13 May 2015 19:03:00 +0000 (22:03 +0300)]
fix again reserved props
Mihai Bazon [Thu, 7 May 2015 12:01:16 +0000 (15:01 +0300)]
Make reserved names take priority over the name cache
Mihai Bazon [Tue, 5 May 2015 07:11:38 +0000 (10:11 +0300)]
Only drop the BOM when it's the first character.
Close #704
Mihai Bazon [Mon, 4 May 2015 16:14:42 +0000 (19:14 +0300)]
v2.4.21
Mihai Bazon [Mon, 4 May 2015 14:55:42 +0000 (17:55 +0300)]
Fix blank lines in the output.
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.
Mihai Bazon [Mon, 4 May 2015 12:07:16 +0000 (15:07 +0300)]
Remove deprecated calls to utils.print/utils.error
Close #542, #641, #647
Mihai Bazon [Mon, 4 May 2015 11:49:17 +0000 (14:49 +0300)]
Avoid spurious brackets when dropping unused vars
Fix #702
Mihai Bazon [Thu, 23 Apr 2015 09:08:19 +0000 (12:08 +0300)]
Fix parsing strings with literal DOS newlines
(should not set newline_before)
Fix #693
Mihai Bazon [Wed, 22 Apr 2015 14:34:49 +0000 (17:34 +0300)]
If name_cache is specified, do rename cached properties
(even if --mangle-props is not there)
Mihai Bazon [Fri, 17 Apr 2015 08:28:59 +0000 (11:28 +0300)]
Fix tests
Mihai Bazon [Fri, 17 Apr 2015 08:25:19 +0000 (11:25 +0300)]
Drop NaN -> 0/0 transformation.
Fix #687
Fábio Santos [Sun, 12 Apr 2015 13:51:26 +0000 (14:51 +0100)]
Added expect_exact for testing the OutputStream
This works almost exactly like `expect`, except that you pass a literal string
of which the result is compared with the generated output.
XhmikosR [Tue, 14 Apr 2015 15:29:14 +0000 (18:29 +0300)]
Normalize package.json.
* Specify the files to install in package.json
* Add missing properties
* Follow `npm init`'s scheme
Jordan Harband [Sat, 11 Apr 2015 22:35:18 +0000 (15:35 -0700)]
Test on latest `node` and `io.js`
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.
Mihai Bazon [Mon, 13 Apr 2015 15:59:21 +0000 (18:59 +0300)]
v2.4.20
Mihai Bazon [Mon, 13 Apr 2015 14:29:48 +0000 (17:29 +0300)]
Fix compression of conditionals
Don't move the condition on the right side of an assignment when
the left side may have side effects.
Fix #677
Mihai Bazon [Fri, 10 Apr 2015 08:33:29 +0000 (11:33 +0300)]
Use the `before` visitor in mangle props
(works around a bug in our tree walker which, while cloning nodes, breaks
references between labeled statements and break/continue labels)
Mihai Bazon [Sun, 5 Apr 2015 10:19:46 +0000 (13:19 +0300)]
More fixes for the breaking changes in yargs
Close #670
Mihai Bazon [Sat, 4 Apr 2015 12:29:03 +0000 (15:29 +0300)]
Merge pull request #669 from galvanix/documentation-inSourceMap
Document passing source maps directly to minify() using inSourceMap
David Caldwell [Sat, 4 Apr 2015 00:27:28 +0000 (17:27 -0700)]
Document passing source maps directly to minify() using inSourceMap
Mihai Bazon [Sun, 29 Mar 2015 11:02:37 +0000 (14:02 +0300)]
v2.4.19
Mihai Bazon [Sun, 29 Mar 2015 11:01:21 +0000 (14:01 +0300)]
Merge pull request #660 from ntkme/fix-long-options
Fix long options
ãªã¤ã [Sun, 29 Mar 2015 10:50:00 +0000 (03:50 -0700)]
Fix long options
Mihai Bazon [Sun, 29 Mar 2015 10:19:07 +0000 (13:19 +0300)]
Disable testing with Node 0.8
Mihai Bazon [Sun, 29 Mar 2015 10:15:27 +0000 (13:15 +0300)]
v2.4.18
Mihai Bazon [Sun, 29 Mar 2015 10:13:40 +0000 (13:13 +0300)]
Update README
Mihai Bazon [Sun, 29 Mar 2015 09:50:43 +0000 (12:50 +0300)]
Merge branch 'propmangle'
Mihai Bazon [Sun, 29 Mar 2015 09:38:06 +0000 (12:38 +0300)]
Add tool to extract property names
Mihai Bazon [Tue, 24 Mar 2015 11:59:57 +0000 (13:59 +0200)]
Merge in more DOM properties.
Mihai Bazon [Mon, 23 Mar 2015 21:27:00 +0000 (23:27 +0200)]
Fix compressing `![foo()];` as a statement
need to check whether the literal has any side effects before replacing that
with `false`.
Mihai Bazon [Sun, 22 Mar 2015 11:01:42 +0000 (13:01 +0200)]
[sequencesize] Actually even better:
do create the sequence even if the stat list is bigger than 2000 statements,
but limit the sequence itself to 2000 expressions.
Ref #414
Mihai Bazon [Sun, 22 Mar 2015 10:51:15 +0000 (12:51 +0200)]
Avoid sequencesize for more than 2000 statements.
It hardly saves any bytes for a sequence so long, and it risks blowing the
stack with the recursive Seq functions.
Ref #414
Mihai Bazon [Sun, 22 Mar 2015 10:50:36 +0000 (12:50 +0200)]
Add start/end nodes for NaN/Infinity transformations
Mihai Bazon [Sun, 22 Mar 2015 09:04:28 +0000 (11:04 +0200)]
Export readDefaultReservedFile
Mihai Bazon [Fri, 20 Mar 2015 08:28:51 +0000 (10:28 +0200)]
Keep unused function arguments by default
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
Mihai Bazon [Thu, 19 Mar 2015 10:54:43 +0000 (12:54 +0200)]
Don't use Object.create
Mihai Bazon [Thu, 19 Mar 2015 08:10:01 +0000 (10:10 +0200)]
tools/props.html: output complete JSON
Mihai Bazon [Wed, 18 Mar 2015 10:09:09 +0000 (12:09 +0200)]
Add --reserve-domprops along with a default exclusion list in tools/domprops.json
Mihai Bazon [Wed, 18 Mar 2015 09:53:17 +0000 (11:53 +0200)]
Support multiple --reserved-file args
Mihai Bazon [Wed, 18 Mar 2015 09:51:09 +0000 (11:51 +0200)]
Bump yargs version (for .array arguments)
Mihai Bazon [Wed, 18 Mar 2015 08:09:30 +0000 (10:09 +0200)]
Fix parsing for U+2028 / U+2029
(they should be treated as whitespace)
Mihai Bazon [Wed, 18 Mar 2015 08:09:30 +0000 (10:09 +0200)]
Fix parsing for U+2028 / U+2029
(they should be treated as whitespace)
Mihai Bazon [Tue, 17 Mar 2015 12:31:22 +0000 (14:31 +0200)]
tools/props.html: use try/catch in a few more places
Mihai Bazon [Tue, 17 Mar 2015 09:46:04 +0000 (11:46 +0200)]
Add tool to list DOM properties/methods
Mihai Bazon [Tue, 17 Mar 2015 08:05:49 +0000 (10:05 +0200)]
Export readNameCache / writeNameCache
Mihai Bazon [Mon, 16 Mar 2015 11:16:30 +0000 (13:16 +0200)]
rename --prop-cache to --name-cache
... and support storing there variable names as well, to help with multiple
invocations when mangling toplevel.
Mihai Bazon [Mon, 16 Mar 2015 08:53:31 +0000 (10:53 +0200)]
Fix prop mangling
Even if not “definedâ€, do mangle if name exists in the cache.
Mihai Bazon [Sat, 14 Mar 2015 09:36:58 +0000 (11:36 +0200)]
Fix --reserved-file
Mihai Bazon [Sat, 14 Mar 2015 09:22:28 +0000 (11:22 +0200)]
Add property name mangler
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.
Mihai Bazon [Tue, 10 Mar 2015 22:03:12 +0000 (00:03 +0200)]
v2.4.17
Edward Casbon [Mon, 11 Aug 2014 11:40:01 +0000 (12:40 +0100)]
Add filename to the JS_Parse_Error exception.
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.
Rob Loach [Tue, 27 Jan 2015 20:55:05 +0000 (15:55 -0500)]
Add .npmignore
Richard van Velzen [Wed, 11 Feb 2015 20:27:21 +0000 (21:27 +0100)]
Clean up unit test breakage
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.
Richard van Velzen [Wed, 11 Feb 2015 20:05:49 +0000 (21:05 +0100)]
Fix invalid removal of left side in && and || compression
See #637. This does not produce the optimal result, but it does prevent the removal of non-side-effect-free code.
Anthony Van de Gejuchte [Tue, 10 Feb 2015 15:57:17 +0000 (16:57 +0100)]
Parse regexes properly
Richard van Velzen [Sat, 31 Jan 2015 12:22:07 +0000 (13:22 +0100)]
Drop all `console` statements properly
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
Mihai Bazon [Tue, 27 Jan 2015 20:26:27 +0000 (22:26 +0200)]
Add option to preserve/enforce string quote style
`-q 0` (default) use single or double quotes such as to minimize the number of
bytes (prefers double quotes when both will do); this is the previous
behavior.
`-q 1` -- always use single quotes
`-q 2` -- always use double quotes
`-q 3` or just `-q` -- always use the original quotes.
Related codegen option: `quote_style`.
Close #495
Close #460
Some `yargs` guru please tell me why `uglifyjs --help` doesn't display the
help string for `-q` / `--quotes`, and why it doesn't output the expected
argument types anymore, like good old `optimist` did.
Anthony Van de Gejuchte [Fri, 9 Jan 2015 15:46:40 +0000 (16:46 +0100)]
Keep single line comments after nlb, after nlb
Fixes #583
Richard van Velzen [Mon, 26 Jan 2015 11:07:44 +0000 (12:07 +0100)]
Make empty source map values more reasonable in .minify()
`"null"` isn't a very usable value. `JSON.parse(null)` also gives `null`, which makes this fully backwards compatible.
Closes #616
Bryce Cronkite-Ratcliff [Sat, 24 Jan 2015 08:24:08 +0000 (00:24 -0800)]
fixes issue #621 SourceMap toString JSON format
The correct format of a sourcemap is acquired
from a mozilla source map generator by calling
toJSON on this object. This patch alters the
toString function on mozilla generators to print
the format that is to spec instead of the generator's
internal representation of itself.
Mihai Bazon [Tue, 20 Jan 2015 11:00:31 +0000 (13:00 +0200)]
Merge pull request #615 from avdg/unicode
Give parser more unicode support
Anthony Van de Gejuchte [Mon, 19 Jan 2015 23:31:44 +0000 (00:31 +0100)]
Add test
Anthony Van de Gejuchte [Mon, 19 Jan 2015 20:35:53 +0000 (21:35 +0100)]
Add unicode digit parsing support
Anthony Van de Gejuchte [Sun, 18 Jan 2015 23:59:29 +0000 (00:59 +0100)]
Update unicode letter
Tal Ater [Sat, 13 Sep 2014 15:59:19 +0000 (18:59 +0300)]
Optimize conditionals where the consequent and alternative are both booleans and not equivalent
Mihai Bazon [Mon, 12 Jan 2015 16:18:55 +0000 (18:18 +0200)]
Merge pull request #612 from rvanvelzen/issue-611
Replace the correct node when replacing in `void` sequences