Alex Lam S.L [Wed, 31 May 2017 20:33:05 +0000 (04:33 +0800)]
whitelist `unsafe` `evaluate` candidates (#2039)
- all arguments may accept constant values
- return constant value
- free of side effects
- available & identical across locales and runtime environments
Alex Lam S.L [Wed, 31 May 2017 16:56:28 +0000 (00:56 +0800)]
enhance `unsafe` `evaluate` (#2037)
kzc [Wed, 31 May 2017 13:52:43 +0000 (09:52 -0400)]
reformat mangle options section of README (#2036)
Alex Lam S.L [Wed, 31 May 2017 03:34:51 +0000 (11:34 +0800)]
v3.0.14
Alex Lam S.L [Tue, 30 May 2017 19:38:00 +0000 (03:38 +0800)]
introduce `unsafe_Func` (#2033)
Separate flag for #203 functionality.
Alex Lam S.L [Tue, 30 May 2017 17:56:52 +0000 (01:56 +0800)]
widen CLI parse error code fragment displayed (#2032)
fixes #2030
Alex Lam S.L [Mon, 29 May 2017 02:52:13 +0000 (10:52 +0800)]
v3.0.13
Alex Lam S.L [Mon, 29 May 2017 02:51:41 +0000 (10:51 +0800)]
better fix for #512 & #2010 (#2019)
- remove duplicated functionalities
- fix similar issue with `else`
Alex Lam S.L [Sun, 28 May 2017 14:57:20 +0000 (22:57 +0800)]
display default values in `--help options` (#2018)
Alex Lam S.L [Sun, 28 May 2017 10:21:44 +0000 (18:21 +0800)]
implement `--help options` (#2017)
Alex Lam S.L [Sat, 27 May 2017 20:09:40 +0000 (04:09 +0800)]
improve CLI usability (#2016)
Report supported options upon invalid option syntax.
fixes #1883
Alex Lam S.L [Sat, 27 May 2017 14:18:28 +0000 (22:18 +0800)]
extend `node_version` range on applicable tests (#2015)
Alex Lam S.L [Sat, 27 May 2017 10:08:09 +0000 (18:08 +0800)]
v3.0.12
Alex Lam S.L [Sat, 27 May 2017 09:44:59 +0000 (17:44 +0800)]
fix `hoist_funs` on block-scoped `function` under "use strict" (#2013)
Technically not part of ES5, but commonly used code exists in the wild.
Alex Lam S.L [Sat, 27 May 2017 05:41:49 +0000 (13:41 +0800)]
fix `if_return` on `AST_Defun` (#2010)
Previous fiix for #1052 perturbs declaration order of functions which leads to incorrect behaviour under "use strict".
kzc [Sat, 27 May 2017 05:17:30 +0000 (01:17 -0400)]
clarify what --mangle-props does (#2012)
kzc [Fri, 26 May 2017 18:28:43 +0000 (14:28 -0400)]
better document mangle properties options (#2009)
kzc [Fri, 26 May 2017 17:25:51 +0000 (13:25 -0400)]
fix and expand --mangle-props documentation (#2008)
fixes #2007
Alex Lam S.L [Fri, 26 May 2017 08:08:51 +0000 (16:08 +0800)]
fix `dead_code` on block-scoped `function` under "use strict" (#2006)
Technically not part of ES5, but commonly used code exists in the wild.
Alex Lam S.L [Thu, 25 May 2017 19:58:35 +0000 (03:58 +0800)]
clean up `lib/scope.js` (#2003)
fixes #2004
Alex Lam S.L [Wed, 24 May 2017 23:15:55 +0000 (07:15 +0800)]
report timing breakdown (#2000)
fix corner cases with `sourceMap`
fixes #1998
Alex Lam S.L [Wed, 24 May 2017 18:32:36 +0000 (02:32 +0800)]
ensure new line after `describe_ast()` (#1999)
Alex Lam S.L [Tue, 23 May 2017 18:30:09 +0000 (02:30 +0800)]
reinstate `describe_ast()` on CLI (#1996)
fixes #1995
Alex Lam S.L [Tue, 23 May 2017 14:26:59 +0000 (22:26 +0800)]
v3.0.11
Alex Lam S.L [Tue, 23 May 2017 12:25:48 +0000 (20:25 +0800)]
fix source map offset (#1993)
Account for whitespace insertions.
fixes #505
fixes #890
kzc [Mon, 22 May 2017 04:19:07 +0000 (00:19 -0400)]
add another minify() options example (#1988)
Alex Lam S.L [Sun, 21 May 2017 17:38:43 +0000 (01:38 +0800)]
improve usability of `global_defs` in `minify()` (#1987)
Use `@key` to `parse()` string value as `AST_Node`.
fixes #1986
kzc [Sat, 20 May 2017 20:55:03 +0000 (16:55 -0400)]
more refinement of minify() documentation (#1983)
Alex Lam S.L [Sat, 20 May 2017 17:30:17 +0000 (01:30 +0800)]
v3.0.10
kzc [Sat, 20 May 2017 14:09:51 +0000 (10:09 -0400)]
add "es5" to package.json keywords (#1980)
kzc [Sat, 20 May 2017 14:09:21 +0000 (10:09 -0400)]
document minify() option `toplevel` (#1979)
Alex Lam S.L [Sat, 20 May 2017 07:58:46 +0000 (15:58 +0800)]
enhance `if_return` to handle `return void...` (#1977)
fixes #512
kzc [Sat, 20 May 2017 02:49:35 +0000 (22:49 -0400)]
document 3.x minify() does not throw errors (#1975)
kzc [Fri, 19 May 2017 09:20:21 +0000 (05:20 -0400)]
document minify `warnings` and add an error example (#1973)
Alex Lam S.L [Fri, 19 May 2017 01:35:26 +0000 (09:35 +0800)]
v3.0.9
Alex Lam S.L [Fri, 19 May 2017 01:06:29 +0000 (09:06 +0800)]
introduce `unsafe_regexp` (#1970)
fixes #1964
Alex Lam S.L [Thu, 18 May 2017 06:49:40 +0000 (14:49 +0800)]
v3.0.8
Alex Lam S.L [Thu, 18 May 2017 03:28:35 +0000 (11:28 +0800)]
make `expect_stdout` node version specific (#1963)
... via semver string on `node_version` label.
Kara [Thu, 18 May 2017 02:51:49 +0000 (19:51 -0700)]
fix docs for side_effects flag to reflect current behavior (#1966)
Alex Lam S.L [Wed, 17 May 2017 12:10:50 +0000 (20:10 +0800)]
improve `RegExp` handling (#1959)
- remove `options.output.unescape_regexps`
- preserve original pattern whenever possible
fixes #54
fixes #1929
Alex Lam S.L [Wed, 17 May 2017 06:07:34 +0000 (14:07 +0800)]
remove `space_colon` (#1960)
Always emit space after colon when `options.output.beautify` is enabled.
Rob Garrison [Wed, 17 May 2017 03:54:46 +0000 (22:54 -0500)]
update output options in readme (#1958)
alexlamsl [Wed, 17 May 2017 02:32:59 +0000 (10:32 +0800)]
remove Travis CI badge
Alex Lam S.L [Tue, 16 May 2017 11:59:40 +0000 (19:59 +0800)]
v3.0.7
Alex Lam S.L [Tue, 16 May 2017 11:59:05 +0000 (19:59 +0800)]
export `TreeTransformer` (#1950)
- link to existing documentation on `TreeWalker` & `TreeTransformer`
- fix Travis build failures
fixes #1949
Alex Lam S.L [Mon, 15 May 2017 22:38:58 +0000 (06:38 +0800)]
v3.0.6
Alex Lam S.L [Mon, 15 May 2017 22:34:32 +0000 (06:34 +0800)]
print package name alongside version in CLI (#1946)
fixes #1945
Alex Lam S.L [Mon, 15 May 2017 21:40:49 +0000 (05:40 +0800)]
fix parsing of property access after new line (#1944)
Account for comments when detecting property access in `tokenizer`.
fixes #1943
alexlamsl [Mon, 15 May 2017 17:33:01 +0000 (01:33 +0800)]
minor fixes to README.md
kzc [Mon, 15 May 2017 17:12:00 +0000 (13:12 -0400)]
reorg README for 3.x (#1942)
Alex Lam S.L [Mon, 15 May 2017 15:02:55 +0000 (23:02 +0800)]
improve keyword-related parser errors (#1941)
fixes #1937
Alex Lam S.L [Mon, 15 May 2017 03:34:59 +0000 (11:34 +0800)]
v3.0.5
Alex Lam S.L [Sun, 14 May 2017 18:37:53 +0000 (02:37 +0800)]
fix & improve coverage of `estree` (#1935)
- fix `estree` conversion of getter/setter
- fix non-directive literal in `to_mozilla_ast()`
- revamp `test/mozilla-ast.js`
- reuse `test/ufuzz.js` for code generation
- use `acorn.parse()` for creating `estree`
- extend `test/ufuzz.js` for `acorn` workaround
- catch variable redefinition
- non-trivial literal as directive
- adjust options for tolerance
Miscellaneous
- optional semi-colon when parsing directives
fixes #1914
closes #1915
kzc [Sat, 13 May 2017 18:12:14 +0000 (14:12 -0400)]
Tweak README Notes (#1934)
Alex Lam S.L [Sat, 13 May 2017 18:10:34 +0000 (02:10 +0800)]
fix bugs with getter/setter (#1926)
- `reduce_vars`
- `side_effects`
- property access for object
- `AST_SymbolAccessor` as key names
enhance `test/ufuzz.js`
- add object getter & setter
- property assignment to setter
- avoid infinite recursion in setter
- fix & adjust assignment operators
- 50% `=`
- 25% `+=`
- 2.5% each for the rest
- avoid "Invalid array length"
- fix `console.log()`
- bypass getter
- curb recursive reference
- deprecate `-E`, always report runtime errors
olsonpm [Sat, 13 May 2017 04:54:32 +0000 (23:54 -0500)]
document 3 max passes (#1928)
olsonpm [Sat, 13 May 2017 04:54:01 +0000 (23:54 -0500)]
clarify wording (#1931)
Alex Lam S.L [Fri, 12 May 2017 06:57:41 +0000 (14:57 +0800)]
remove support for `const` (#1910)
As this is not part of ES5.
Alex Lam S.L [Fri, 12 May 2017 04:34:55 +0000 (12:34 +0800)]
avoid `arguments` and `eval` in `reduce_vars` (#1924)
fixes #1922
olsonpm [Fri, 12 May 2017 04:29:55 +0000 (23:29 -0500)]
add documentation for `side_effects` & `[#@]__PURE__` (#1925)
Alex Lam S.L [Thu, 11 May 2017 20:52:39 +0000 (04:52 +0800)]
v3.0.4
Alex Lam S.L [Thu, 11 May 2017 20:51:44 +0000 (04:51 +0800)]
fix invalid transform on `const` (#1919)
- preserve (re)assignment to `const` for runtime error
- suppress `cascade` on `const`, as runtime behaviour is ill-defined
kzc [Thu, 11 May 2017 19:36:33 +0000 (15:36 -0400)]
update README (#1918)
Alexis Tyler [Thu, 11 May 2017 12:24:33 +0000 (21:54 +0930)]
fix typo (#1913)
Alex Lam S.L [Thu, 11 May 2017 09:50:50 +0000 (17:50 +0800)]
update documentation (#1909)
- clarify options on `--source-map`
- fix `minify()` examples
fixes #1905
Alex Lam S.L [Wed, 10 May 2017 03:45:03 +0000 (11:45 +0800)]
v3.0.3
kzc [Wed, 10 May 2017 03:07:54 +0000 (23:07 -0400)]
Update issue template: change harmony to uglify-es (#1900)
kzc [Wed, 10 May 2017 03:06:50 +0000 (23:06 -0400)]
Remove unnecessary `git clone` instructions in README (#1897)
kzc [Tue, 9 May 2017 21:07:45 +0000 (17:07 -0400)]
Change `harmony` to `uglify-es` in master README (#1895)
Alex Lam S.L [Tue, 9 May 2017 20:20:59 +0000 (04:20 +0800)]
gracefully handle non-`Error` being thrown (#1893)
Alex Lam S.L [Tue, 9 May 2017 18:43:12 +0000 (02:43 +0800)]
extend test timeout
Travis has gone a lot slower recently, and most test failures are due to time-out on this particular test.
Alex Lam S.L [Tue, 9 May 2017 17:52:00 +0000 (01:52 +0800)]
v3.0.2
Alex Lam S.L [Tue, 9 May 2017 08:36:44 +0000 (16:36 +0800)]
print error stack in CLI (#1890)
Alex Lam S.L [Tue, 9 May 2017 08:08:04 +0000 (16:08 +0800)]
mention `minify().error`
Alex Lam S.L [Tue, 9 May 2017 07:58:46 +0000 (15:58 +0800)]
update `minify()` usage in `test/ufuzz.js` (#1888)
fixes #1887
kzc [Mon, 8 May 2017 15:06:56 +0000 (11:06 -0400)]
[3.x] fix documentation for beautify options (#1882)
- use underscores rather than dashes.
Alex Lam S.L [Sun, 7 May 2017 23:05:57 +0000 (07:05 +0800)]
v3.0.1
Alex Lam S.L [Sun, 7 May 2017 23:05:19 +0000 (07:05 +0800)]
return `Error` from `minify()` (#1880)
Have `minify()` return `Error` in `result.error` rather than throwing it.
Alex Lam S.L [Sun, 7 May 2017 22:23:01 +0000 (06:23 +0800)]
support dumping AST (#1879)
Re-order `AST_Binary` properties to make dump more readable.
closes #769
Alex Lam S.L [Sun, 7 May 2017 19:24:42 +0000 (03:24 +0800)]
deprecate low level API (#1877)
fixes #1872
Alex Lam S.L [Sun, 7 May 2017 18:11:45 +0000 (02:11 +0800)]
support `minify()` output as AST (#1878)
- `options.output.ast` (default `false`)
- `options.output.code` (default `true`)
Alex Lam S.L [Sat, 6 May 2017 19:02:46 +0000 (03:02 +0800)]
update documentation
Remove deprecated CLI option
Alex Lam S.L [Sat, 6 May 2017 18:56:02 +0000 (02:56 +0800)]
fix test for #1865 (#1873)
Alex Lam S.L [Sat, 6 May 2017 15:51:10 +0000 (23:51 +0800)]
v3.0.0
Alex Lam S.L [Sat, 6 May 2017 15:18:55 +0000 (23:18 +0800)]
fix `unsafe` on `evaluate` of `reduce_vars` (#1870)
Determine if variables with non-constant values can escape and be modified.
fixes #1865
Alex Lam S.L [Sat, 6 May 2017 09:42:07 +0000 (17:42 +0800)]
kill `opera` (#1869)
Alex Lam S.L [Sat, 6 May 2017 08:15:43 +0000 (16:15 +0800)]
enhance `collapse_vars` (#1862)
- extend expression types
- `a++`
- `a=x;`
- extend scan range
- `for(init;;);`
- `switch(expr){case expr:}`
- `a = x; a = a || y;`
- terminate upon `debugger;`
closes #1821
fixes #27
fixes #315
fixes #1858
Alex Lam S.L [Tue, 2 May 2017 12:47:10 +0000 (20:47 +0800)]
rename variables for better readability (#1863)
Alex Lam S.L [Tue, 2 May 2017 11:48:12 +0000 (19:48 +0800)]
update `test/benchmark.js` resources (#1864)
Alex Lam S.L [Mon, 1 May 2017 17:42:29 +0000 (01:42 +0800)]
restore report of supported options (#1861)
fixes #1859
kzc [Mon, 1 May 2017 16:10:11 +0000 (12:10 -0400)]
improve literal return optimization (#1860)
Alex Lam S.L [Sun, 30 Apr 2017 14:52:36 +0000 (22:52 +0800)]
enforce `toplevel` on other compress options (#1855)
Respect "funcs" and "vars" properly.
fixes #1850
kzc [Tue, 25 Apr 2017 17:30:43 +0000 (13:30 -0400)]
Update ISSUE_TEMPLATE.md (#1846)
Alex Lam S.L [Sun, 23 Apr 2017 19:15:03 +0000 (03:15 +0800)]
fix fuzzer on `this` (#1842)
- forbid redeclaration of `this`
- suppress probability for `this` within nested functions
Alex Lam S.L [Sun, 23 Apr 2017 19:14:01 +0000 (03:14 +0800)]
fix `unused` on for-in statements (#1843)
Only need to avoid `var` within the initialisation block.
fixes #1841
Alex Lam S.L [Sun, 23 Apr 2017 12:05:22 +0000 (20:05 +0800)]
improve parser under "use strict" (#1836)
- `const` without value
- `delete` of expression
- redefining `arguments` or `eval`
extend `test/ufuzz.js`
- optionally generate "use strict"
- improve handling of test cases with syntax errors
- group IIFE generation
- generate bare anonymous functions
- workaround `console.log()` for `new function()`
- generate expressions with `this`
fixes #1810
kzc [Sat, 22 Apr 2017 20:28:32 +0000 (16:28 -0400)]
update README for 3.x (#1840)
Alex Lam S.L [Sat, 22 Apr 2017 17:51:56 +0000 (01:51 +0800)]
fix `AST_For.init` patch-up in `drop_unused()` (#1839)
fixes #1838
Alex Lam S.L [Sat, 22 Apr 2017 14:15:04 +0000 (22:15 +0800)]
fix label-related bugs (#1835)
- deep cloning of `AST_LabeledStatement`
- `L:do{...}while(false)`
- empty statement with label within block
extend `test/ufuzz.js`
- generate labels for blocks & loops
- generate for-in statements
- skip suspicious option search if `minify()` errs
fixes #1833
Roman Dvornov [Thu, 20 Apr 2017 18:23:41 +0000 (21:23 +0300)]
Fix API reference examples (#1834)