Age | Commit message (Expand) | Author |
2017-05-08 | return `Error` from `minify()` (#1880)...Have `minify()` return `Error` in `result.error` rather than throwing it. | Alex Lam S.L |
2017-05-08 | support dumping AST (#1879)...Re-order `AST_Binary` properties to make dump more readable.
closes #769 | Alex Lam S.L |
2017-05-08 | support `minify()` output as AST (#1878)...- `options.output.ast` (default `false`)
- `options.output.code` (default `true`) | Alex Lam S.L |
2017-05-06 | 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 |
2017-05-06 | kill `opera` (#1869) | Alex Lam S.L |
2017-05-06 | 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 |
2017-05-02 | rename variables for better readability (#1863) | Alex Lam S.L |
2017-05-02 | improve literal return optimization (#1860) | kzc |
2017-04-30 | enforce `toplevel` on other compress options (#1855)...Respect "funcs" and "vars" properly.
fixes #1850 | Alex Lam S.L |
2017-04-24 | fix `unused` on for-in statements (#1843)...Only need to avoid `var` within the initialisation block.
fixes #1841 | Alex Lam S.L |
2017-04-23 | 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 | Alex Lam S.L |
2017-04-23 | fix `AST_For.init` patch-up in `drop_unused()` (#1839)...fixes #1838 | Alex Lam S.L |
2017-04-22 | 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 | Alex Lam S.L |
2017-04-20 | improve `unused` (#1832)...- extract leading value with side-effects out of `var` statement
- reduce scanning of `AST_Definitions` from 3 passes to just once | Alex Lam S.L |
2017-04-20 | fix `unused` on labeled for-loop (#1831)...fixes #1830 | Alex Lam S.L |
2017-04-19 | improve `collapse_vars` on `AST_Var` (#1828)...Perform the same cascaded scanning within `var` statement as we do on array of statements. | Alex Lam S.L |
2017-04-19 | fix parser bugs & CLI reporting (#1827)...fixes #1825 | Alex Lam S.L |
2017-04-19 | extend `cascade` into `a.b` (#1829)...fixes #27 | Alex Lam S.L |
2017-04-18 | clean up `collapse_vars` (#1826)...- remove overlap in functionality of singular, consecutive reference of constant value
- remove workarounds for previous bugs in `lib/scope.js`
- distribute recursive `collapse_single_use_vars()` calls to their respective `OPT(AST_Node)`
- enable collapsing of variables within a single `AST_Definitions` | Alex Lam S.L |
2017-04-18 | support safe reassignments in `reduce_vars` (#1823)...`var a=1;a=2;x(a)` => `x(2)`
fix pre-existing issues
- reference counting on assignment
- walking of anonymous functions
- chained assignment | Alex Lam S.L |
2017-04-18 | fix `reduce_vars` on conditionals (#1822) | Alex Lam S.L |
2017-04-17 | fix `reduce_vars` on boolean binary expressions (#1819)...Side effects of `&&` and `||` have not mattered until #1814, which takes assignment expressions into account. | Alex Lam S.L |
2017-04-17 | compress duplicated variable definitions (#1817)...These are surprisingly common, as people reuse the same variable name within loops or switch branches. | Alex Lam S.L |
2017-04-17 | fix `reduce_vars` within try-block (#1818)...Possible partial execution due to exceptions. | Alex Lam S.L |
2017-04-17 | enhance `reduce_vars` (#1814)...- allow immediate assignment after declaration of variable
- relax modification rule for immutable value
- fix order of visit for TreeWalker
- remove extraneous code | Alex Lam S.L |
2017-04-16 | fix variable substitution (#1816)...- let `collapse_vars` take care of value containing any symbols
- improve overhead accounting | Alex Lam S.L |
2017-04-15 | unify CLI & API under `minify()` (#1811)...- rename `screw_ie8` to `ie8`
- rename `mangle.except` to `mangle.reserved`
- rename `mangle.properties.ignore_quoted` to `mangle.properties.keep_quoted`
- compact `sourceMap` options
- more stringent verification on input `options`
- toplevel shorthands
- `ie8`
- `keep_fnames`
- `toplevel`
- `warnings`
- support arrays and unquoted string values on CLI
- drop `fromString` from `minify()`
- `minify()` no longer handles any `fs` operations
- unify order of operations for `mangle_properties()` on CLI & API
- `bin/uglifyjs` used to `mangle_properties()` before even `Compressor`
- `minify()` used to `mangle_properties()` after `Compressor` but before `mangle_names()`
- both will now do `Compressor`, `mangle_names()` then `mangle_properties()`
- `options.parse` / `--parse` for parser options beyond `bare_returns`
- add `mangle.properties.builtins` to disable built-in reserved list
- disable with `--mangle-props builtins` on CLI
- `warnings` now off by default
- add `--warn` and `--verbose` on CLI
- drop `--enclose`
- drop `--export-all`
- drop `--reserved-file`
- use `--mangle reserved` instead
- drop `--reserve-domprops`
- enabled by default, disable with `--mangle-props domprops`
- drop `--prefix`
- use `--source-map base` instead
- drop `--lint`
- remove `bin/extract-props.js`
- limit exposure of internal APIs
- update documentations
closes #96
closes #102
closes #136
closes #166
closes #243
closes #254
closes #261
closes #311
closes #700
closes #748
closes #912
closes #1072
closes #1366
fixes #101
fixes #123
fixes #124
fixes #263
fixes #379
fixes #419
fixes #423
fixes #461
fixes #465
fixes #576
fixes #737
fixes #772
fixes #958
fixes #1036
fixes #1142
fixes #1175
fixes #1220
fixes #1223
fixes #1280
fixes #1359
fixes #1368 | Alex Lam S.L |
2017-04-15 | drop `angular` (#1812)...Remove support for `@ngInject` as there are proper alternatives anyway. | Alex Lam S.L |
2017-04-12 | convert `AST_Seq` from binary tree to array (#1460)...- rename `AST_Seq` to `AST_Sequence`
- raise default sequences_limit from 200 to 800 | Alex Lam S.L |
2017-04-09 | fix LHS cases for NaN & friends (#1804)...`Infinity = beyond` should not become `1/0 = beyond` | Alex Lam S.L |
2017-04-08 | fix a couple of bugs in `global_defs` (#1802)...- `optimize()` substituted expression
- compute nested property string correctly
fixes #1801
Miscellaneous
- reset optimisation flags on all node types | Alex Lam S.L |
2017-04-08 | fix `delete` corner cases (#1799)...- assignment
- boolean
- conditional
- sequence | Alex Lam S.L |
2017-04-07 | fix `pure_getters` for chained property access (#1798) | Alex Lam S.L |
2017-04-07 | fix corner cases with `delete` (#1796)...`delete Infinity` returns `false` where as `delete (1/0)` returns `true` | Alex Lam S.L |
2017-04-07 | introduce "strict" to `pure_getters` (#1795) | Alex Lam S.L |
2017-04-07 | fix `reduce_vars` on catch variable (#1794)...Improved catch handling in `figure_out_scope()` means special case treatment of IE8 is no longer valid in `reset_opt_flags()`.
Also fixed recursive assignment in variable definition. | Alex Lam S.L |
2017-04-07 | fix incorrect context in variable substitution (#1791)...`AST_Node.optimize()` is context-aware, so don't cache its results to be used elsewhere.
Also fixed a few cases of AST corruption and beef up safety of `pure_getters`. | Alex Lam S.L |
2017-04-07 | enable `inline_script` by default (#1793) | Alex Lam S.L |
2017-04-06 | improve `pure_getters` (#1786)...- property access to `null` & `undefined` always has side effects
- utilise `reduce_vars` to determine safe property access
- may-be cases treated as side effects unless `unsafe` | Alex Lam S.L |
2017-04-05 | implement delayed resolution for `reduce_vars` (#1788)...Although it would be nice to enforce `AST_Node` cloning during transformation, that ship has sailed a long time ago.
We now get the assigned value when resolving `AST_SymbolRef` instead of `reset_opt_flags()`, which has the added advantage of improved compressor efficiency.
fixes #1787 | Alex Lam S.L |
2017-04-04 | optimise `do{...}while(false)` (#1785)...- better heuristics to avoid issues like #1532
- fix `TreeWalker.loopcontrol_target()`
- `continue` cannot refer to `switch` blocks | Alex Lam S.L |
2017-04-04 | exclude mangling of special property names (#1779)...- `null`
- `true`
- `false`
- numeric literals | Alex Lam S.L |
2017-04-03 | fix `mangleProperties` on identifiers (#1776)...- fix handling of "-Infinity"
- add test case for "-0"
reverts #1481 | Alex Lam S.L |
2017-04-03 | fix mangleProperties of `undefined` & `Infinity` (#1772)...`NaN` already works by the happy accident of `Number.NaN`
fixes #1770 | Alex Lam S.L |
2017-04-02 | fix corner case in `switch` (#1765) | Alex Lam S.L |
2017-04-02 | avoid confusion of `NaN` & `Infinity` with `catch` symbol of the same name (#......fixes #1760
fixes #1761 | Alex Lam S.L |
2017-04-02 | fix corner cases in switch and undefined (#1762)...- fix side effects in switch condition for singular blocks
- fix `undefined` confusion with local variable
- gate `OPT(AST_Switch)` with `switches`
fixes #1758
fixes #1759 | Alex Lam S.L |
2017-04-01 | fix switch branch elimination (#1752)...Merge unreachable case body with previous fallthrough case
fixes #1750 | Alex Lam S.L |
2017-04-01 | improve compression of undefined, NaN & Infinitiy (#1748)...- migrate transformation logic from `OutputStream` to `Compressor`
- always turn `undefined` into `void 0` (unless `unsafe`)
- always keep `NaN` except when avoiding local variable redefinition
- introduce `keep_infinity` to suppress `1/0` transform, except when avoiding local variable redefinition
supersedes #1723
fixes #1730 | Alex Lam S.L |
2017-03-31 | combine rules for binary boolean operations (#1744) | Alex Lam S.L |