aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2017-04-19extend `cascade` into `a.b` (#1829)Alex Lam S.L
fixes #27
2017-04-18clean up `collapse_vars` (#1826)Alex Lam S.L
- 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`
2017-04-18support safe reassignments in `reduce_vars` (#1823)Alex Lam S.L
`var a=1;a=2;x(a)` => `x(2)` fix pre-existing issues - reference counting on assignment - walking of anonymous functions - chained assignment
2017-04-18fix `reduce_vars` on conditionals (#1822)Alex Lam S.L
2017-04-17fix `reduce_vars` on boolean binary expressions (#1819)Alex Lam S.L
Side effects of `&&` and `||` have not mattered until #1814, which takes assignment expressions into account.
2017-04-17compress duplicated variable definitions (#1817)Alex Lam S.L
These are surprisingly common, as people reuse the same variable name within loops or switch branches.
2017-04-17fix `reduce_vars` within try-block (#1818)Alex Lam S.L
Possible partial execution due to exceptions.
2017-04-17enhance `reduce_vars` (#1814)Alex Lam S.L
- allow immediate assignment after declaration of variable - relax modification rule for immutable value - fix order of visit for TreeWalker - remove extraneous code
2017-04-16fix variable substitution (#1816)Alex Lam S.L
- let `collapse_vars` take care of value containing any symbols - improve overhead accounting
2017-04-15unify CLI & API under `minify()` (#1811)Alex Lam S.L
- 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
2017-04-15drop `angular` (#1812)Alex Lam S.L
Remove support for `@ngInject` as there are proper alternatives anyway.
2017-04-12convert `AST_Seq` from binary tree to array (#1460)Alex Lam S.L
- rename `AST_Seq` to `AST_Sequence` - raise default sequences_limit from 200 to 800
2017-04-09fix LHS cases for NaN & friends (#1804)Alex Lam S.L
`Infinity = beyond` should not become `1/0 = beyond`
2017-04-08fix a couple of bugs in `global_defs` (#1802)Alex Lam S.L
- `optimize()` substituted expression - compute nested property string correctly fixes #1801 Miscellaneous - reset optimisation flags on all node types
2017-04-08fix `delete` corner cases (#1799)Alex Lam S.L
- assignment - boolean - conditional - sequence
2017-04-07fix `pure_getters` for chained property access (#1798)Alex Lam S.L
2017-04-07fix corner cases with `delete` (#1796)Alex Lam S.L
`delete Infinity` returns `false` where as `delete (1/0)` returns `true`
2017-04-07introduce "strict" to `pure_getters` (#1795)Alex Lam S.L
2017-04-07fix `reduce_vars` on catch variable (#1794)Alex Lam S.L
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.
2017-04-07fix incorrect context in variable substitution (#1791)Alex Lam S.L
`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`.
2017-04-07enable `inline_script` by default (#1793)Alex Lam S.L
2017-04-06improve `pure_getters` (#1786)Alex Lam S.L
- 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`
2017-04-05implement delayed resolution for `reduce_vars` (#1788)Alex Lam S.L
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
2017-04-04optimise `do{...}while(false)` (#1785)Alex Lam S.L
- better heuristics to avoid issues like #1532 - fix `TreeWalker.loopcontrol_target()` - `continue` cannot refer to `switch` blocks
2017-04-04exclude mangling of special property names (#1779)Alex Lam S.L
- `null` - `true` - `false` - numeric literals
2017-04-03fix `mangleProperties` on identifiers (#1776)Alex Lam S.L
- fix handling of "-Infinity" - add test case for "-0" reverts #1481
2017-04-03fix mangleProperties of `undefined` & `Infinity` (#1772)Alex Lam S.L
`NaN` already works by the happy accident of `Number.NaN` fixes #1770
2017-04-02fix corner case in `switch` (#1765)Alex Lam S.L
2017-04-02avoid confusion of `NaN` & `Infinity` with `catch` symbol of the same name ↵Alex Lam S.L
(#1763) fixes #1760 fixes #1761
2017-04-02fix corner cases in switch and undefined (#1762)Alex Lam S.L
- 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
2017-04-01fix switch branch elimination (#1752)Alex Lam S.L
Merge unreachable case body with previous fallthrough case fixes #1750
2017-04-01improve compression of undefined, NaN & Infinitiy (#1748)Alex Lam S.L
- 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
2017-03-31combine rules for binary boolean operations (#1744)Alex Lam S.L
2017-03-31sort options in alphabetical order (#1743)Alex Lam S.L
They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read.
2017-03-31fix missing preamble when shebang is absent (#1742)Alex Lam S.L
2017-03-31fix catch symbol mangling (#1734)Alex Lam S.L
Only need to look up the immediate non-block/catch scope for the same-name special case. fixes #1733
2017-03-30remove paranthesis for `-(x*y)` (#1732)Alex Lam S.L
2017-03-30optimize try-catch-finally (#1731)Alex Lam S.L
- eliminate empty blocks - flatten out if try-block does not throw
2017-03-29speed up IIFE elimination (#1728)Alex Lam S.L
- `side_effects` will clean up inner statements, so checking for an empty function body should suffice - drop side effects when dropping `return` from statement
2017-03-29speed up `equivalent_to()` and `AST_Switch` (#1727)Alex Lam S.L
2017-03-29fix missing parentheses around NaN/Infinity shorthands (#1726)Alex Lam S.L
fixes #1724 fixes #1725
2017-03-29output optimal representations of NaN & Infinity (#1723)Alex Lam S.L
- move these optimisations out from `Compressor` to `OutputStream` - fixes behaviour inconsistency when running uglified code from global or module levels due to redefinition
2017-03-29improve beautified output of switch blocks (#1721)Alex Lam S.L
2017-03-29fix corner case in `unused` (#1718)Alex Lam S.L
When fixing catch-related issue in #1715, it tries to optimise for duplicate definitions but did not take anonymous functions into account. Remove such optimisation for now and we can cover this as a more general rule later.
2017-03-28fix `unused` on var of the same name within catch (#1716)Alex Lam S.L
fixes #1715
2017-03-28fix `is_number()` on `+=` (#1714)Alex Lam S.L
fixes #1710
2017-03-28drop anonymous function name when overshadowed by other declarations (#1712)Alex Lam S.L
fixes #1709
2017-03-28handle var within catch of the same name (#1711)Alex Lam S.L
The following code prints `1`: var a = 1; !function(){ a = 4; try{ throw 2; } catch (a) { var a = 3; } }(); console.log(a); fixes #1708
2017-03-28fix tail trimming of switch blocks (#1707)Alex Lam S.L
now guarded under `dead_code` fixes #1705
2017-03-28fix mangle for variable declared within catch block (#1706)Alex Lam S.L
fixes #1704