Tdewolff-minify

Latest version: v2.20.34

Safety actively analyzes 638388 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 15 of 20

2.9.5

- cmd: minify input even if extension is unknown but type/mimetype is given
- CSS: fix timeout in property with many commas
- CSS: convert RGBA to `transparent` only if the color is fully transparent black (and not any other transparent color), fixes 332
- CSS: fix crash when rgb/rgba functions have less than three arguments
- CSS: fix `box-shadow` value `none` conversion to `0 0` as they are not equivalent, fixes 332
- HTML: remove space between attributes when after a quoted value
- HTML: keep empty `title` and `lang` attributes, fixes 331
- JS: merge variable declarations even if one has an ObjectPattern
- JS: remove trailing commas in BindingArray (except when Rest ellipsis is set)
- JS: add parenthesis around object literal in arrow function body, fixes 333

2.9.4

- JS: don't remove braces when there are lexical declarations, fixes 326
- JS: don't convert lexical declarations to expressions when hoisting variables, fixes 326
- JS: merge variable declaration and for initializer with variable declaration

2.9.3

- CSS: minify comma-separated lists for `box-shadow`, `background`, `background-repeat`, `background-size`, and `background-position` properties (fixes 322)
- CSS/SVG: remove deprecated `Decimals` options in favor of `Precision`
- cmd: remove `--decimals` options for CSS and SVG minifiers in favor of `--precision`
- cmd: add `--bundle` option to explicitly bundle (concatenate/merge) files into one, do not asume from the `-o` options if it lacks a `/` at the end that it outputs to a file and thus needs to merge the inputs
- cmd: directory inputs needs `--recursive`, previously directories would be expanded by defaults (but not their subdirectories). This matches behaviour of the `cp` command and will be more intuitive.
- cmd: file inputs are copied without considering and recreating its directory path. For example, `minify -o out path/to/file` would output to `out/path/to/file` but will now output to `out/file`. This is the same behaviour as the `cp` command and will be more intuitive for users.

2.9.2

- JS: only put `var` declaration into `for` or `while`, and not `let` nor `const`, fixes 325
- JS: merge more efficiently a `var` declaration with a `for` or `while` statement

2.9.1

- JS: fix parsing `in` identifier in group expressions
- JS: fix parsing identifiers inside arrow function body in some cases 324
- JS: keep all license comments at the top of the file
- JS: minify `typeof x==='undefined'` to `typeof x=='undefined'`
- JS: merge expressions and var declarations with `for` with empty initializer or with `while` statement converted to `for`
- JS: iteratively merge `if(a){return b}if(c){return d}return e` chains to `return a?b:c?d:e`

2.9.0

- **Add JS (ECMAScript 2020) minifier**
- Improve benchmark functions
- Predefine byte-slices instead of inline for performance
- Don't check write errors to output during minification, but check at the end only
- Lexers/parser now require passing `parse.Input` instead of `io.Reader`
- Rename subpackage `min` to `minify`

JS minifier overview
Features:
- remove superfluous whitespace
- remove superfluous semicolons
- shorten `true`, `false`, and `undefined` to `!0`, `!1` and `void 0`
- rename variables and functions to shorter names (not in global scope)
- move `var` declarations to the top of the global/function scope (if more than one)
- collapse `if`/`else` statements to expressions
- minify conditional expressions to simpler ones
- merge sequential expression statements to one, including into `return` and `throw`
- remove superfluous grouping in expressions
- shorten or remove string escapes
- convert object key or index expression from string to identifier or decimal
- merge concatenated strings
- rewrite numbers (binary, octal, decimal, hexadecimal) to shorter representations

It compresses files at about 25 MB/s (only minifying, not considering reading/writing files) which is (much) faster than existing minifiers. Compression rate is between 1.5 and 3.0 depending on the file (respectively, the compression file size is between 35% -- 65% of the original). Example of known files:

| File | Original Size | Compressed Size | Ratio | Time | Speed |
| --- | --- | --- | --- | --- | --- |
| ace.js | 644 kB | 346 kB | 53.7% | 34ms | 19 MB/s |
| dot.js | 5.2 kB | 3.3 kB | 64.9% | 563µs | 9.2 MB/s |
| jquery.js | 247 kB | 85 kB | 34.4% | 11ms | 22 MB/s |
| jqueryui.js | 470 kB | 241 kB | 51.3% | 26ms | 18 MB/s |
| moment.js | 99 kB | 35 kB | 34.9% | 4ms | 24 MB/s |

The minifier has been tested for a number of web applications including WordPress. The `go-fuzz` fuzzer has been used extensively in order to detect bugs, and will continue finding bugs using https://github.com/google/oss-fuzz

Page 15 of 20

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.