Jakub Pawlowicz [Thu, 27 Aug 2015 13:13:57 +0000 (14:13 +0100)]
Fixes #652 - order of restoring and removing unused tokens.
We should first restore token and then remove unused tokens as this
way the positions don't get mangled.
Jakub Pawlowicz [Thu, 27 Aug 2015 07:23:44 +0000 (08:23 +0100)]
Points master to version 3.5.0-pre.
Jakub Pawlowicz [Thu, 27 Aug 2015 07:21:17 +0000 (08:21 +0100)]
Version 3.4.0.
Jakub Pawlowicz [Thu, 27 Aug 2015 07:18:38 +0000 (08:18 +0100)]
Bumps copyright years. Yay!
Jakub Pawlowicz [Thu, 27 Aug 2015 07:15:44 +0000 (08:15 +0100)]
Version 3.3.10 release notes.
Jakub Pawlowicz [Thu, 27 Aug 2015 06:40:38 +0000 (07:40 +0100)]
Adds testing source maps in batch mode.
Previous couple commits were fixes identified by this change, where
output with source maps was different than one without.
Jakub Pawlowicz [Thu, 27 Aug 2015 06:37:29 +0000 (07:37 +0100)]
Fixes removing unused items.
Items should be removed by position as it is not guaranteed that
there are no comments somewhere in between. Affects both modes - source
maps on & off.
Jakub Pawlowicz [Thu, 27 Aug 2015 06:36:19 +0000 (07:36 +0100)]
Improves `outline` break up with source maps.
Another example where JS type coercion betrayed us.
Jakub Pawlowicz [Thu, 27 Aug 2015 05:50:49 +0000 (06:50 +0100)]
Adds better comments + keepBreaks handling.
Basically we should remove a comment AND a subsequent line break when
restoring. This is again due to doing it too late, see #407.
Jakub Pawlowicz [Thu, 27 Aug 2015 05:47:02 +0000 (06:47 +0100)]
Adds better text normalizing in source maps mode.
This is making me uneasy as we needed a slightly bigger hack to
push context to text processor's escape.
See #407.
Jakub Pawlowicz [Wed, 26 Aug 2015 05:11:00 +0000 (06:11 +0100)]
Fixes non-adjacent optimizations for source maps.
We've been comparing wrong things as AST is different.
Jakub Pawlowicz [Tue, 25 Aug 2015 07:10:57 +0000 (08:10 +0100)]
Refixes #629 - source maps & background shorthands.
Jakub Pawlowicz [Tue, 18 Aug 2015 06:45:52 +0000 (07:45 +0100)]
Fixes #632 - adds disabling remote imports.
So far we only had an option to skip inlining of all imports, but
with this commit a fine-grained control is added, e.g. import from
all but fonts.googleapis.com:
API: `new CleanCSS({ processImportFrom: ['!fonts.googleapis.com'] })`
CLI: `cleancss --skip-import-from fonts.googleapis.com`
To skip all local imports:
API: `new CleanCSS({ processImportFrom: ['remote'] })`
CLI: `cleancss --skip-import-from local`
To skip all remote and certain local imports:
API: `new CleanCSS({ processImportFrom: ['local', '!path/to/file'] })`
CLI: `cleancss --skip-import-from remote,path/to/file`
Jakub Pawlowicz [Mon, 24 Aug 2015 04:37:23 +0000 (05:37 +0100)]
Adds support for Polymer mixins.
We lacked support of property-level blocks (just simple values) so
this commit adds this with a special handling of properties in
tokenizer, simple & advanced optimization, and stringifier.
See: https://www.polymer-project.org/1.0/docs/devguide/styling.html#custom-css-mixins
Jakub Pawlowicz [Mon, 24 Aug 2015 05:05:13 +0000 (06:05 +0100)]
Replaces Chunker with uber-powerful split.
These two were doing basically the same thing, while the latter
being smarter about a context.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:37:18 +0000 (05:37 +0100)]
Improves splitting strings when keeping values.
The last value in a string always included a separator while sometimes
it should not.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:37:11 +0000 (05:37 +0100)]
Adds proper handling of an open split character.
When split value starts with an level openinig character we were not
handling such cases correctly.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:36:56 +0000 (05:36 +0100)]
Adds breaking splits on a closing token.
So we can break body on a closing brace which is a separator at the
same time.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:36:44 +0000 (05:36 +0100)]
Adds support for custom split separators.
It defaults to braces as before but it can be customized to anything now.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:36:37 +0000 (05:36 +0100)]
Refactors Splitter class into a split function.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:36:30 +0000 (05:36 +0100)]
Adds support for Polymer / Web Components selectors.
These include
* :host and ::content for Polymer
* /deep/ and ::shadow for Web Components
See #648.
Jakub Pawlowicz [Mon, 24 Aug 2015 04:36:18 +0000 (05:36 +0100)]
Refixes #648 - apply at-rule support.
We were not trimming the token before checking for @ character so
only rules without whitespace were working fine.
Jakub Pawlowicz [Fri, 21 Aug 2015 08:10:32 +0000 (09:10 +0100)]
Fixes #596 - support for !ie IE<8 hack.
!ie fix is like a backslash hack for IE<10.
Jakub Pawlowicz [Fri, 21 Aug 2015 06:25:22 +0000 (07:25 +0100)]
Orders CLI options.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:46:13 +0000 (07:46 +0100)]
Updates install requirements.
Adds io.js 3.0+ as we test against it and it'll become Node.js 4 at
some point.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:43:24 +0000 (07:43 +0100)]
Adds npm caching in Travis CI builds.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:40:48 +0000 (07:40 +0100)]
Bumps tested io.js to 3.0.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:40:12 +0000 (07:40 +0100)]
Switches builds to Travis CI container infrastructure.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:25:55 +0000 (07:25 +0100)]
Adds missing compatibility docs.
Missing since adding in, pt, and pc to unit minification.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:23:17 +0000 (07:23 +0100)]
Removes 2.x -> 3.x upgrade guide.
We are at 3.4 already and if anyone needs it a 3.x branch still
has it.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:20:47 +0000 (07:20 +0100)]
Tweaks wording in readme and CLI help.
Jakub Pawlowicz [Thu, 20 Aug 2015 06:15:12 +0000 (07:15 +0100)]
Fixes #649 - adds readme section about advanced optimizations.
Jakub Pawlowicz [Tue, 18 Aug 2015 06:11:35 +0000 (07:11 +0100)]
Adds a test for inlining content with protocol-less URLs.
This refers to #632, but just confirms we do the right thing.
Jakub Pawlowicz [Mon, 17 Aug 2015 06:31:53 +0000 (07:31 +0100)]
Fixes #607 - adds better rule reordering.
Apparently IDs coupled with tag selectors are safe for reordering too.
Jakub Pawlowicz [Sun, 16 Aug 2015 15:43:07 +0000 (16:43 +0100)]
Fixes #635 - adds safer `0%` optimizations.
Apparently we can't turn `0%` into `0` for height & max-height where
layout breaks, see: http://codepen.io/H1D/pen/bdzRJo
Jakub Pawlowicz [Sun, 16 Aug 2015 15:35:55 +0000 (16:35 +0100)]
Fixes #618 - adds less restricitve function validation.
To support various functions which may allow URLs inside them, like
`image-src()` we need a less restrictve validation regex.
Jakub Pawlowicz [Sun, 16 Aug 2015 14:52:10 +0000 (15:52 +0100)]
Fixes #645 - adds bottom to top `media` merging.
In addition to top to bottom media merging we now support the reverse
order one. It works similar way as same selector two-way merging - see
2f8f100592908225c853997051f56bb87c35c20d.
Consider this example where top to bottom is not possible but reverse is:
```css
@media (max-width:768px){.one{padding-right:0}}
.one{padding:10px}
@media (max-width:768px){.one{margin:0}}
```
Jakub Pawlowicz [Sun, 16 Aug 2015 13:51:56 +0000 (14:51 +0100)]
Fixes #648 - adds property level at-rule support.
Polymer uses `@apply` rule on property level, so we support it now too.
Jakub Pawlowicz [Sun, 16 Aug 2015 11:17:55 +0000 (12:17 +0100)]
Adds inferring proxy settings from environment variables.
It is common for *nix and Windows programs to use to HTTP_PROXY
variable to identify proxy settings. So do we, e.g.
```bash
HTTP_PROXY=http://proxy-host:proxy-port cleancss styles.css
```
Jule Marcoueille [Fri, 7 Aug 2015 17:34:32 +0000 (19:34 +0200)]
Fixes #612 - adds HTTP proxy support for `@import` inlining.
By passing a full href to request proxy we can instruct it to
pass the request to the upstream server.
To use a proxy (via API), pass the proxy hostname and port to the
inliner options, e.g.
```javascript
new CleanCSS({
inliner: {
request: {
hostname: 'proxy host',
port: 'proxy port'
}
}
}).minify(...);
```
Specs by @jakubpawlowicz.
Jakub Pawlowicz [Thu, 13 Aug 2015 12:26:30 +0000 (13:26 +0100)]
Adds unit compatibility switches to disable length optimizations.
You can disable px -> (in|pc|pt) transforations with compatibility unit
switches. Tied to #625.
Jakub Pawlowicz [Thu, 13 Aug 2015 07:20:33 +0000 (08:20 +0100)]
Fixes #625 - adds length unit conversions.
* Converts px -> in (96px -> 1in);
* Converts px -> pc (16px -> 1pc);
* Converts px -> pt (4px -> 3pt).
Jakub Pawlowicz [Mon, 10 Aug 2015 07:49:44 +0000 (08:49 +0100)]
Fixes #644 - adds time unit optimizations.
It adds the following optimizations:
* second -> milisecond, e.g. 0.005s -> 5ms
* milisecond -> second, e.g. 500ms -> .5s
Jakub Pawlowicz [Sun, 9 Aug 2015 10:06:19 +0000 (11:06 +0100)]
Version 3.3.9 release notes.
Jakub Pawlowicz [Sun, 9 Aug 2015 09:55:15 +0000 (10:55 +0100)]
Fixes #640 - URI processing regression.
The fix to #633 included a regression in URI processing as the
algorithm introduced should only be applied to data URIs.
Jakub Pawlowicz [Sun, 9 Aug 2015 06:48:46 +0000 (07:48 +0100)]
Merge pull request #642 from vlajos/typofixes-vlajos-
20150807
typofix - https://github.com/vlajos/misspell_fixer
Veres Lajos [Fri, 7 Aug 2015 21:28:51 +0000 (22:28 +0100)]
typofix - https://github.com/vlajos/misspell_fixer
Jakub Pawlowicz [Fri, 7 Aug 2015 05:36:21 +0000 (06:36 +0100)]
Merge pull request #639 from yomed/plugin-list
Updates README.md plugin list with lasso-clean-css
Yoni Medoff [Fri, 7 Aug 2015 04:20:29 +0000 (21:20 -0700)]
Updates README.md plugin list with lasso-clean-css
Jakub Pawlowicz [Thu, 6 Aug 2015 08:21:09 +0000 (09:21 +0100)]
Version 3.3.8 release notes.
Jakub Pawlowicz [Thu, 6 Aug 2015 08:14:30 +0000 (09:14 +0100)]
Fixes #634 - merging :placeholder selectors.
:placeholder is also not widely supported (IE10+) so we need to
skip merging it.
Jakub Pawlowicz [Wed, 5 Aug 2015 07:20:20 +0000 (08:20 +0100)]
Fixes #629 - source maps & background shorthands.
Properly handles cases when `background-color` is broken up in the
presence of source maps.
That happened because value array was coerced into a string which,
in presence of a source map, has also source info.
Jakub Pawlowicz [Wed, 5 Aug 2015 06:45:51 +0000 (07:45 +0100)]
Fixes #633 - handling data URI with brackets.
We need to identify cases when data URI are escaped (and brackets
are not) so we can get the whole URI.
Jakub Pawlowicz [Thu, 30 Jul 2015 08:33:27 +0000 (09:33 +0100)]
Fixes #630 - vendor prefixed flex optimizations.
It's not only flex & flex-basis which should not be optimized but
also their vendor prefixed counterparts.
Jakub Pawlowicz [Tue, 4 Aug 2015 08:15:06 +0000 (09:15 +0100)]
Bumps browserify to 11.x.
Jakub Pawlowicz [Wed, 29 Jul 2015 07:18:39 +0000 (08:18 +0100)]
Version 3.3.7 release notes.
Jakub Pawlowicz [Fri, 24 Jul 2015 12:50:26 +0000 (13:50 +0100)]
Fixes #616 - ordering in restructuring.
Reverses the order in which properties are traversed so
ones appearing last are processed first, resulting in a
correct restructuring when a longhand appears after a shorthand.
Jakub Pawlowicz [Fri, 10 Jul 2015 06:54:06 +0000 (07:54 +0100)]
Unifies wrappers for simple & advanced optimizations.
Previously we had two wrappings, one for simple optimizations (just importance
and hacks), and other for advanced optimizations.
Right now it's just one (the latter) with simple optimizations adapted to
use the wrapping. This way it's more readable & prepares us for simplifying
the code further.
Jakub Pawlowicz [Tue, 14 Jul 2015 07:55:27 +0000 (08:55 +0100)]
Version 3.3.6 release notes.
Jakub Pawlowicz [Tue, 14 Jul 2015 07:51:36 +0000 (08:51 +0100)]
Fixes #620 - `bold` style in font shorthands.
Looking forward to an ultimate fix with #254.
Jakub Pawlowicz [Fri, 10 Jul 2015 06:48:38 +0000 (07:48 +0100)]
Adds more info about using `inliner` API option.
Jakub Pawlowicz [Wed, 1 Jul 2015 12:35:55 +0000 (13:35 +0100)]
Version 3.3.5 release notes.
Jakub Pawlowicz [Thu, 25 Jun 2015 06:12:04 +0000 (07:12 +0100)]
Fixes #608 - custom URI protocols handling.
We were not treating custom URI protocols as remote ones so
they were rewritten as local ones.
Jakub Pawlowicz [Wed, 24 Jun 2015 08:07:39 +0000 (09:07 +0100)]
Version 3.3.4 release notes.
Jakub Pawlowicz [Wed, 24 Jun 2015 08:02:48 +0000 (09:02 +0100)]
Adds more `inherit` restoring tests.
Jakub Pawlowicz [Wed, 24 Jun 2015 08:00:23 +0000 (09:00 +0100)]
Simplifies `inherit` checks in property restoring.
Jakub Pawlowicz [Wed, 24 Jun 2015 07:53:47 +0000 (08:53 +0100)]
Fixes #610 - `border:inherit` restoring.
Apparently `withoutDefaults` restoring suffered the same issue as
`background` property restoring - see #563.
Jakub Pawlowicz [Wed, 24 Jun 2015 07:46:06 +0000 (08:46 +0100)]
Fixes #611 - an edge case in quote stripping.
It manifested itself when rebasing to a relative or
absolute path only.
Jakub Pawlowicz [Tue, 23 Jun 2015 06:02:11 +0000 (07:02 +0100)]
Merge pull request #604 from jakubpawlowicz/inline-source-maps
Fixes #599 - inlined source maps.
Andrew Bradley [Fri, 12 Jun 2015 19:47:16 +0000 (15:47 -0400)]
Fixes #599 - inlined source maps.
Enables ingestion of inline, data-uri source maps.
Jakub Pawlowicz [Tue, 23 Jun 2015 05:42:53 +0000 (06:42 +0100)]
Simplifies unit optimizations code.
It follows a much simpler functional style, which is also easier to
grasp.
Jakub Pawlowicz [Sun, 21 Jun 2015 14:18:37 +0000 (15:18 +0100)]
Cleans up advanced optimizer implementation.
It gets rid of AdvancedOptimizer class in favour to simpler
functional style.
Jakub Pawlowicz [Sun, 21 Jun 2015 14:03:44 +0000 (15:03 +0100)]
Extracts 'merge media queries' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 13:49:36 +0000 (14:49 +0100)]
Extracts 'remove duplicate media queries' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 13:35:19 +0000 (14:35 +0100)]
Extracts 'restructure' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 11:37:56 +0000 (12:37 +0100)]
Extracts 'merge non adjacent by body' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 11:26:50 +0000 (12:26 +0100)]
Extracts 'merge non adjacent by selector' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 11:09:06 +0000 (12:09 +0100)]
Extracts 'reduce non adjacent' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 10:53:03 +0000 (11:53 +0100)]
Extracts 'merge adjacent' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 10:40:18 +0000 (11:40 +0100)]
Extracts 'remove duplicates' optimization into a module.
Jakub Pawlowicz [Sun, 21 Jun 2015 10:09:36 +0000 (11:09 +0100)]
Fixes removing new lines from free text values.
Jakub Pawlowicz [Sun, 21 Jun 2015 10:08:40 +0000 (11:08 +0100)]
Rebuilds integration tests with test helpers.
Jakub Pawlowicz [Sun, 21 Jun 2015 09:28:46 +0000 (10:28 +0100)]
Extracts test helpers from tests.
Jakub Pawlowicz [Fri, 19 Jun 2015 08:11:15 +0000 (09:11 +0100)]
Moves files around.
* lib/selectors/optimizer.js is no more (inlined into lib/clean.js);
* Simple and advanced modules go to lib/selectors;
* Simple and advanced tests are separated.
Jakub Pawlowicz [Tue, 16 Jun 2015 07:44:00 +0000 (08:44 +0100)]
Version 3.3.3 release notes.
Jakub Pawlowicz [Tue, 16 Jun 2015 07:42:29 +0000 (08:42 +0100)]
Fixes #603 - IE suffix hack should be left on by default.
It works up to IE9 and we have IE9 mode on by default!
Jakub Pawlowicz [Mon, 15 Jun 2015 15:08:33 +0000 (16:08 +0100)]
Normalizes anonymous function declarations.
the `function ()` with a space is more readable.
Jakub Pawlowicz [Mon, 15 Jun 2015 15:03:59 +0000 (16:03 +0100)]
Runs binary tests sequentially.
Prevents all topics from being evaluated at the same time, which
can stress system resources and lead to slower execution.
Jakub Pawlowicz [Sun, 14 Jun 2015 15:03:31 +0000 (16:03 +0100)]
Bumps JSHint to 2.8.x.
Jakub Pawlowicz [Sun, 14 Jun 2015 14:47:31 +0000 (15:47 +0100)]
Version 3.3.2 release notes.
Jakub Pawlowicz [Sun, 14 Jun 2015 14:41:11 +0000 (15:41 +0100)]
Fixes #602 - backslash IE hacks after a space.
Previously a backslash IE hacks with a leading space
were not processed correctly.
Jakub Pawlowicz [Sun, 14 Jun 2015 13:52:45 +0000 (14:52 +0100)]
Fixes #595 - more relaxed flat block matching.
Apparently there are IE hacks that allow mixing flat block
declarations with pseudoselectors:
```css
/* IE 10 special css */
_:-ms-lang(x), @-ms-viewport {
width: auto\9 !important;
}
```
Jakub Pawlowicz [Sun, 14 Jun 2015 09:59:02 +0000 (10:59 +0100)]
Fixes #601 - minifying percentages inside `flex`.
Apparently IE10-11 do not like it.
Jakub Pawlowicz [Wed, 10 Jun 2015 06:45:50 +0000 (07:45 +0100)]
Merge pull request #597 from kaelig/patch-1
It's Sass, not SASS
Kaelig [Tue, 9 Jun 2015 16:21:00 +0000 (17:21 +0100)]
It's Sass, not SASS
Jakub Pawlowicz [Tue, 2 Jun 2015 20:00:41 +0000 (21:00 +0100)]
Version 3.3.1 release notes.
Jakub Pawlowicz [Tue, 2 Jun 2015 18:51:24 +0000 (19:51 +0100)]
Fixes #590 - an edge case in import processing.
Rebasing import statements without url had a nasty edge case where
a subsequent content ended up wrapped into a `url()`.
Jakub Pawlowicz [Sun, 31 May 2015 15:10:13 +0000 (16:10 +0100)]
Points master to version 3.4.0-pre.
Jakub Pawlowicz [Sun, 31 May 2015 15:06:41 +0000 (16:06 +0100)]
Version 3.3.0.
Jakub Pawlowicz [Sun, 31 May 2015 14:53:39 +0000 (15:53 +0100)]
Version 3.2.11 release notes.