Age | Commit message (Collapse) | Author |
|
- `Array.prototype.slice` => `[].slice`
closes #1491
|
|
fixes #1377
closes #1488
|
|
closes #1487
|
|
reduce whitespaces from if-else statements
fixes #1482
closes #1483
|
|
- `test/benchmark.js` measures performance
- `test/jetstream.js` verifies correctness
- configurable mangle/compress/output options
closes #1479
|
|
- support arrays, objects & AST_Node
- support `"a.b":1` on both cli & API
- emit warning if variable is modified
- override top-level variables
fixes #1416
closes #1198
closes #1469
|
|
fix invalid boolean conversion now exposed in `make_node_from_constant()`
closes #1477
|
|
- update modified flag between compress() passes
- support IIFE arguments
- fix corner case with multiple definitions
closes #1473
|
|
- utilise in_use_ids instead of unreferenced()
- drop_unused now up-to-date for subsequent passes
closes #1476
|
|
previously test cases with the same name would be skipped except for the last one
`test/run-test.js` will now report duplicated names as errors
closes #1461
|
|
closes #1459
|
|
- remove extra tree scanning phase for `negate_iife`
- `negate_iife` now only deals with the narrowest form, i.e. IIFE sitting directly under `AST_SimpleStatement`
- `booleans`, `conditionals` etc. will now take care the rest via more accurate accounting
- `a(); void b();` => `a(); b();`
fixes #1288
closes #1451
|
|
shuffle associative operations to minimise parentheses and aid other uglification efforts
closes #1454
|
|
N = 2:
a;
b;
c;
d;
was:
a, b;
c;
d;
now:
a, b;
c, d;
fixes #1455
closes #1457
|
|
- `do{...}while(false)` => `{...}`
- clean up `AST_While` logic
closes #1452
|
|
fixes
- [a].join() => "" + a
- ["a", , "b"].join() => "a,,b"
- ["a", null, "b"].join() => "a,,b"
- ["a", undefined, "b"].join() => "a,,b"
improvements
- ["a", "b"].join(null) => "anullb"
- ["a", "b"].join(undefined) => "a,b"
- [a + "b", c].join("") => a + "b" + c
closes #1453
|
|
- assign statement does not count towards variable usage by default
- only works with assignments on the same scope level as declaration
- can be disabled with `unused` set to "keep_assign"
- `toplevel` to drop unused top-level variables and/or functions
- `top_retain` to whitelist top-level exceptions
closes #1450
|
|
closes #1449
|
|
move out of unsafe, guard corner case with screw_id8 instead
closes #1446
|
|
happens when inner function:
- just below top level
- not referenced
- `unused` is disabled
closes #1445
|
|
they are computed but never used
closes #1444
|
|
remove extraneous call to AST_SymbolRef.reference()
closes #1443
|
|
closes #1437
|
|
improved reduce_vars & binary operands produce more optimal results
|
|
* fix mangling collision with keep_fnames
fixes #1423
* pass mangle options to figure_out_scope()
bring command-line in line with minify()
|
|
- remove call to evaluate() in is_constant() and let nested optimize() does its job instead
- reject RegExp in is_constant() and remove special case logic under collapse_vars
- operands to conditionals optimisation are now always evaluate()-ed
- throw error in constant_value() instead of returning undefined to catch possible bugs, similar to make_node_from_constant()
- optimise binary boolean operators under `evaluate` instead of `conditionals`
|
|
- gated by `unsafe`
- replaces previous optimisation specific to String.length
- "123"[0] => 1
- [1, 2, 3][0] => 1
- [1, 2, 3].length => 3
- does not apply to objects with overridden prototype functions
|
|
|
|
Clarify docs, help and tests for --support-ie8 and screw_ie8=false
|
|
|
|
|
|
|
|
|
|
If using `inSourceMap` this fix will ensure the copying of `sourcesContent` is based on potentially normalized `sources` values (https://github.com/mozilla/source-map/blob/master/lib/source-map-consumer.js#L304-L309).
For example `normalize` (https://github.com/mozilla/source-map/blob/master/lib/util.js#L80-L123) will rewrite `./dist/mySource.js` to `dist/mySource.js` in the target `_sources` of the `SourceMapConsumer`. As a result `orig_map.sourceContentFor(source, true);` would return `null` since the orginal `source` was no longer available in the consumer. By using the keys generating from the `SourceMapConsumer.constructor` consistency is ensured.
|
|
|
|
will deduced
|
|
Patch by @AshleyScirra
Based on: PR #1316
Renamed the CLI debug option to --mangle-props-debug
Fixes: #1321 name collision in --mangle-props=unquoted
|
|
|
|
|
|
|
|
Also clarify documentation a bit more about using regexp as filter
|
|
Using the symbol declaration tracking of UglifyJS doesn't make sense here
anyway, `arguments` always comes from something in the current scope.
fixes #1299
|
|
|
|
|
|
For #1307.
|
|
Fixes #1289 with suggestion by @rvanvelzen
|
|
|
|
Also removing more code within "loop" while at it.
|
|
Account for side effects in `string + expr` optimization
|
|
|