UglifyJS.git
7 years agov3.0.19
Alex Lam S.L [Wed, 21 Jun 2017 19:24:22 +0000 (03:24 +0800)]
v3.0.19

7 years agoensure mangling works if catch reuses a scope variable (#2123)
Alex Lam S.L [Mon, 19 Jun 2017 18:14:05 +0000 (02:14 +0800)]
ensure mangling works if catch reuses a scope variable (#2123)

fixes #2120

7 years agov3.0.18
Alex Lam S.L [Sun, 18 Jun 2017 07:01:20 +0000 (15:01 +0800)]
v3.0.18

7 years agomake defensive copies when `inline` (#2116)
Alex Lam S.L [Sat, 17 Jun 2017 06:32:37 +0000 (14:32 +0800)]
make defensive copies when `inline` (#2116)

fixes #2114

7 years agofix loss of context in `collapse_vars` & `cascade` (#2112)
Alex Lam S.L [Fri, 16 Jun 2017 13:18:43 +0000 (21:18 +0800)]
fix loss of context in `collapse_vars` & `cascade` (#2112)

fixes #2110

7 years agoin-place `tigten_body()` (#2111)
Alex Lam S.L [Fri, 16 Jun 2017 11:19:54 +0000 (19:19 +0800)]
in-place `tigten_body()` (#2111)

By reducing copies of `AST_Node` arrays, we should be able to reduce:
- memory pressure
- potential bugs caused by multiple references in AST
- duplicated executions of `OPT()`

7 years agocorrectly determine scope of `AST_This` (#2109)
Alex Lam S.L [Fri, 16 Jun 2017 06:54:46 +0000 (14:54 +0800)]
correctly determine scope of `AST_This` (#2109)

fixes #2107

7 years agoenforce `inline` scope restriction (#2106)
Alex Lam S.L [Thu, 15 Jun 2017 19:21:38 +0000 (03:21 +0800)]
enforce `inline` scope restriction (#2106)

fixes #2105

7 years agov3.0.17
Alex Lam S.L [Thu, 15 Jun 2017 10:59:37 +0000 (18:59 +0800)]
v3.0.17

7 years agosuppress `inline` of `this` (#2103)
Alex Lam S.L [Thu, 15 Jun 2017 04:14:16 +0000 (12:14 +0800)]
suppress `inline` of `this` (#2103)

fixes #2101

7 years agoavoid intermittent test time-out failures (#2100)
Alex Lam S.L [Wed, 14 Jun 2017 20:47:57 +0000 (04:47 +0800)]
avoid intermittent test time-out failures (#2100)

7 years agocompute `uses_arguments` correctly in `figure_out_scope()` (#2099)
Alex Lam S.L [Wed, 14 Jun 2017 19:28:26 +0000 (03:28 +0800)]
compute `uses_arguments` correctly in `figure_out_scope()` (#2099)

fixes #2097

7 years agofix parsing of `expect_stdout` (#2096)
Alex Lam S.L [Wed, 14 Jun 2017 17:00:03 +0000 (01:00 +0800)]
fix parsing of `expect_stdout` (#2096)

fixes #2095

7 years agov3.0.16
Alex Lam S.L [Wed, 14 Jun 2017 08:45:09 +0000 (16:45 +0800)]
v3.0.16

7 years agoadd comment about quote_style and gzip (#2092)
kzc [Wed, 14 Jun 2017 04:23:03 +0000 (00:23 -0400)]
add comment about quote_style and gzip (#2092)

7 years agocache web assets between CI runs (#2089)
Alex Lam S.L [Wed, 14 Jun 2017 03:53:10 +0000 (11:53 +0800)]
cache web assets between CI runs (#2089)

- skip `test/jetstream.js` for `node@0.12`

7 years agofix CLI parsing of `--source-map content` (#2088)
Ziad El Khoury Hanna [Tue, 13 Jun 2017 08:30:46 +0000 (10:30 +0200)]
fix CLI parsing of `--source-map content` (#2088)

fixes #2082

7 years agoadd Node.js 8 to Travis CI (#2086)
Alex Lam S.L [Mon, 12 Jun 2017 22:21:16 +0000 (06:21 +0800)]
add Node.js 8 to Travis CI (#2086)

- explicitly terminate `test/jetstream.js` upon completion
- log verbose output from `test/benchmark.js` & `test/jetstream.js`
- remove obsolete workaround for Travis CI

7 years agoallow `expect_stdout` to specify `Error` (#2087)
Alex Lam S.L [Mon, 12 Jun 2017 20:57:26 +0000 (04:57 +0800)]
allow `expect_stdout` to specify `Error` (#2087)

7 years agofix variable accounting in `inline` (#2085)
Alex Lam S.L [Mon, 12 Jun 2017 17:40:14 +0000 (01:40 +0800)]
fix variable accounting in `inline` (#2085)

fixes #2084

7 years agosuppress false positives for-in loops (#2080)
Alex Lam S.L [Sat, 10 Jun 2017 05:55:17 +0000 (13:55 +0800)]
suppress false positives for-in loops (#2080)

fixes #2079

7 years agofix portability of `sandbox.run_code()` on Node.js 0.1x (#2078)
Alex Lam S.L [Fri, 9 Jun 2017 17:08:58 +0000 (01:08 +0800)]
fix portability of `sandbox.run_code()` on Node.js 0.1x (#2078)

7 years agofix non-string parameters (#2076)
Alex Lam S.L [Fri, 9 Jun 2017 16:11:40 +0000 (00:11 +0800)]
fix non-string parameters (#2076)

`Stream.write()` is not as versatile as `console.log()`

7 years agoreport `test/ufuzz.js` failures in `process.stderr` (#2074)
Alex Lam S.L [Fri, 9 Jun 2017 07:56:28 +0000 (15:56 +0800)]
report `test/ufuzz.js` failures in `process.stderr` (#2074)

7 years agomarshal `mangle[.properties].reserved` from non-Array values (#2072)
Alex Lam S.L [Thu, 8 Jun 2017 20:29:12 +0000 (04:29 +0800)]
marshal `mangle[.properties].reserved` from non-Array values (#2072)

7 years agofix iteration over object with inherited properties (#2068)
Alex Lam S.L [Wed, 7 Jun 2017 19:27:03 +0000 (03:27 +0800)]
fix iteration over object with inherited properties (#2068)

fixes #2055

7 years agofix `cascade` on multi-branch evaluations (#2067)
Alex Lam S.L [Wed, 7 Jun 2017 11:52:01 +0000 (19:52 +0800)]
fix `cascade` on multi-branch evaluations (#2067)

Partially reverts #2059 as this has better coverage and performance.

fixes #2062

7 years agofix CLI output corruption (#2061)
Alex Lam S.L [Tue, 6 Jun 2017 20:25:32 +0000 (04:25 +0800)]
fix CLI output corruption (#2061)

Using `console.error()` & `console.log()` result in inconsistent formatting across Node.js versions.

Avoid this issue by directly writing to `process.stderr` & `process.stdout` instead.

Miscellaneous
- prettify invalid option listing

7 years agofix `inline` handling of `AST_Call.args` (#2059)
Alex Lam S.L [Tue, 6 Jun 2017 14:55:25 +0000 (22:55 +0800)]
fix `inline` handling of `AST_Call.args` (#2059)

7 years agoimplement `test/jetstream.js --debug` (#2058)
Alex Lam S.L [Tue, 6 Jun 2017 11:28:12 +0000 (19:28 +0800)]
implement `test/jetstream.js --debug` (#2058)

7 years agoimplement function inlining (#2053)
Alex Lam S.L [Mon, 5 Jun 2017 21:49:53 +0000 (05:49 +0800)]
implement function inlining (#2053)

- empty body
- single `AST_Return`
- single `AST_SimpleStatement`
- avoid `/*#__PURE__*/`

Miscellaneous
- enhance single-use function substitution

fixes #281

7 years agoworkaround webkit parsing error (#2056)
Alex Lam S.L [Mon, 5 Jun 2017 20:06:42 +0000 (04:06 +0800)]
workaround webkit parsing error (#2056)

apply `webkit` to jetstream tests

7 years agofix `AST_Function` scope invariance (#2052)
Alex Lam S.L [Sun, 4 Jun 2017 11:27:43 +0000 (19:27 +0800)]
fix `AST_Function` scope invariance (#2052)

improve function name hack in `run_code()`

7 years agoadd tests for `AST_SymbolAccessor` (#2049)
Alex Lam S.L [Sat, 3 Jun 2017 08:08:10 +0000 (16:08 +0800)]
add tests for `AST_SymbolAccessor` (#2049)

7 years agoclean up `lib/parse.js` (#2047)
Alex Lam S.L [Sat, 3 Jun 2017 06:00:59 +0000 (14:00 +0800)]
clean up `lib/parse.js` (#2047)

- remove unused definitions
- replace `array_to_hash()`

7 years agobetter document behavior of unsafe_Func (#2043)
kzc [Fri, 2 Jun 2017 04:07:17 +0000 (00:07 -0400)]
better document behavior of unsafe_Func (#2043)

7 years agov3.0.15
Alex Lam S.L [Thu, 1 Jun 2017 10:12:38 +0000 (18:12 +0800)]
v3.0.15

7 years agofix non-identifier getter/setter name (#2041)
Alex Lam S.L [Thu, 1 Jun 2017 10:11:16 +0000 (18:11 +0800)]
fix non-identifier getter/setter name (#2041)

fixes #2040

7 years agowhitelist `unsafe` `evaluate` candidates (#2039)
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

7 years agoenhance `unsafe` `evaluate` (#2037)
Alex Lam S.L [Wed, 31 May 2017 16:56:28 +0000 (00:56 +0800)]
enhance `unsafe` `evaluate` (#2037)

7 years agoreformat mangle options section of README (#2036)
kzc [Wed, 31 May 2017 13:52:43 +0000 (09:52 -0400)]
reformat mangle options section of README (#2036)

7 years agov3.0.14
Alex Lam S.L [Wed, 31 May 2017 03:34:51 +0000 (11:34 +0800)]
v3.0.14

7 years agointroduce `unsafe_Func` (#2033)
Alex Lam S.L [Tue, 30 May 2017 19:38:00 +0000 (03:38 +0800)]
introduce `unsafe_Func` (#2033)

Separate flag for #203 functionality.

7 years agowiden CLI parse error code fragment displayed (#2032)
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

7 years agov3.0.13
Alex Lam S.L [Mon, 29 May 2017 02:52:13 +0000 (10:52 +0800)]
v3.0.13

7 years agobetter fix for #512 & #2010 (#2019)
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`

7 years agodisplay default values in `--help options` (#2018)
Alex Lam S.L [Sun, 28 May 2017 14:57:20 +0000 (22:57 +0800)]
display default values in `--help options` (#2018)

7 years agoimplement `--help options` (#2017)
Alex Lam S.L [Sun, 28 May 2017 10:21:44 +0000 (18:21 +0800)]
implement `--help options` (#2017)

7 years agoimprove CLI usability (#2016)
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

7 years agoextend `node_version` range on applicable tests (#2015)
Alex Lam S.L [Sat, 27 May 2017 14:18:28 +0000 (22:18 +0800)]
extend `node_version` range on applicable tests (#2015)

7 years agov3.0.12
Alex Lam S.L [Sat, 27 May 2017 10:08:09 +0000 (18:08 +0800)]
v3.0.12

7 years agofix `hoist_funs` on block-scoped `function` under "use strict" (#2013)
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.

7 years agofix `if_return` on `AST_Defun` (#2010)
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".

7 years agoclarify what --mangle-props does (#2012)
kzc [Sat, 27 May 2017 05:17:30 +0000 (01:17 -0400)]
clarify what --mangle-props does (#2012)

7 years agobetter document mangle properties options (#2009)
kzc [Fri, 26 May 2017 18:28:43 +0000 (14:28 -0400)]
better document mangle properties options (#2009)

7 years agofix and expand --mangle-props documentation (#2008)
kzc [Fri, 26 May 2017 17:25:51 +0000 (13:25 -0400)]
fix and expand --mangle-props documentation (#2008)

fixes #2007

7 years agofix `dead_code` on block-scoped `function` under "use strict" (#2006)
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.

7 years agoclean up `lib/scope.js` (#2003)
Alex Lam S.L [Thu, 25 May 2017 19:58:35 +0000 (03:58 +0800)]
clean up `lib/scope.js` (#2003)

fixes #2004

7 years agoreport timing breakdown (#2000)
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

7 years agoensure new line after `describe_ast()` (#1999)
Alex Lam S.L [Wed, 24 May 2017 18:32:36 +0000 (02:32 +0800)]
ensure new line after `describe_ast()` (#1999)

7 years agoreinstate `describe_ast()` on CLI (#1996)
Alex Lam S.L [Tue, 23 May 2017 18:30:09 +0000 (02:30 +0800)]
reinstate `describe_ast()` on CLI (#1996)

fixes #1995

7 years agov3.0.11
Alex Lam S.L [Tue, 23 May 2017 14:26:59 +0000 (22:26 +0800)]
v3.0.11

7 years agofix source map offset (#1993)
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

7 years agoadd another minify() options example (#1988)
kzc [Mon, 22 May 2017 04:19:07 +0000 (00:19 -0400)]
add another minify() options example (#1988)

7 years agoimprove usability of `global_defs` in `minify()` (#1987)
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

7 years agomore refinement of minify() documentation (#1983)
kzc [Sat, 20 May 2017 20:55:03 +0000 (16:55 -0400)]
more refinement of minify() documentation (#1983)

7 years agov3.0.10
Alex Lam S.L [Sat, 20 May 2017 17:30:17 +0000 (01:30 +0800)]
v3.0.10

7 years agoadd "es5" to package.json keywords (#1980)
kzc [Sat, 20 May 2017 14:09:51 +0000 (10:09 -0400)]
add "es5" to package.json keywords (#1980)

7 years agodocument minify() option `toplevel` (#1979)
kzc [Sat, 20 May 2017 14:09:21 +0000 (10:09 -0400)]
document minify() option `toplevel` (#1979)

7 years agoenhance `if_return` to handle `return void...` (#1977)
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

7 years agodocument 3.x minify() does not throw errors (#1975)
kzc [Sat, 20 May 2017 02:49:35 +0000 (22:49 -0400)]
document 3.x minify() does not throw errors (#1975)

7 years agodocument minify `warnings` and add an error example (#1973)
kzc [Fri, 19 May 2017 09:20:21 +0000 (05:20 -0400)]
document minify `warnings` and add an error example (#1973)

7 years agov3.0.9
Alex Lam S.L [Fri, 19 May 2017 01:35:26 +0000 (09:35 +0800)]
v3.0.9

7 years agointroduce `unsafe_regexp` (#1970)
Alex Lam S.L [Fri, 19 May 2017 01:06:29 +0000 (09:06 +0800)]
introduce `unsafe_regexp` (#1970)

fixes #1964

7 years agov3.0.8
Alex Lam S.L [Thu, 18 May 2017 06:49:40 +0000 (14:49 +0800)]
v3.0.8

7 years agomake `expect_stdout` node version specific (#1963)
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.

7 years agofix docs for side_effects flag to reflect current behavior (#1966)
Kara [Thu, 18 May 2017 02:51:49 +0000 (19:51 -0700)]
fix docs for side_effects flag to reflect current behavior (#1966)

7 years agoimprove `RegExp` handling (#1959)
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

7 years agoremove `space_colon` (#1960)
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.

7 years agoupdate output options in readme (#1958)
Rob Garrison [Wed, 17 May 2017 03:54:46 +0000 (22:54 -0500)]
update output options in readme (#1958)

7 years agoremove Travis CI badge
alexlamsl [Wed, 17 May 2017 02:32:59 +0000 (10:32 +0800)]
remove Travis CI badge

7 years agov3.0.7
Alex Lam S.L [Tue, 16 May 2017 11:59:40 +0000 (19:59 +0800)]
v3.0.7

7 years agoexport `TreeTransformer` (#1950)
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

7 years agov3.0.6
Alex Lam S.L [Mon, 15 May 2017 22:38:58 +0000 (06:38 +0800)]
v3.0.6

7 years agoprint package name alongside version in CLI (#1946)
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

7 years agofix parsing of property access after new line (#1944)
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

7 years agominor fixes to README.md
alexlamsl [Mon, 15 May 2017 17:33:01 +0000 (01:33 +0800)]
minor fixes to README.md

7 years agoreorg README for 3.x (#1942)
kzc [Mon, 15 May 2017 17:12:00 +0000 (13:12 -0400)]
reorg README for 3.x (#1942)

7 years agoimprove keyword-related parser errors (#1941)
Alex Lam S.L [Mon, 15 May 2017 15:02:55 +0000 (23:02 +0800)]
improve keyword-related parser errors (#1941)

fixes #1937

7 years agov3.0.5
Alex Lam S.L [Mon, 15 May 2017 03:34:59 +0000 (11:34 +0800)]
v3.0.5

7 years agofix & improve coverage of `estree` (#1935)
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

7 years agoTweak README Notes (#1934)
kzc [Sat, 13 May 2017 18:12:14 +0000 (14:12 -0400)]
Tweak README Notes (#1934)

7 years agofix bugs with getter/setter (#1926)
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

7 years agodocument 3 max passes (#1928)
olsonpm [Sat, 13 May 2017 04:54:32 +0000 (23:54 -0500)]
document 3 max passes (#1928)

7 years agoclarify wording (#1931)
olsonpm [Sat, 13 May 2017 04:54:01 +0000 (23:54 -0500)]
clarify wording (#1931)

7 years agoremove support for `const` (#1910)
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.

7 years agoavoid `arguments` and `eval` in `reduce_vars` (#1924)
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

7 years agoadd documentation for `side_effects` & `[#@]__PURE__` (#1925)
olsonpm [Fri, 12 May 2017 04:29:55 +0000 (23:29 -0500)]
add documentation for `side_effects` & `[#@]__PURE__` (#1925)

7 years agov3.0.4
Alex Lam S.L [Thu, 11 May 2017 20:52:39 +0000 (04:52 +0800)]
v3.0.4

7 years agofix invalid transform on `const` (#1919)
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