Jakub Pawlowicz [Mon, 4 May 2015 06:22:45 +0000 (07:22 +0100)]
Fixes #448 - rebasing no protocol URIs.
When rebasing remote imports with URIs given without a protocol the
resulting CSS should also use no protocol, e.g:
```
@import "//127.0.0.1/no-protocol.css";
```
=>
```
a{background:url(//127.0.0.1/image.png)}
```
Jakub Pawlowicz [Sun, 3 May 2015 14:07:25 +0000 (15:07 +0100)]
Version 3.2.7 release notes.
Jakub Pawlowicz [Sun, 3 May 2015 14:03:33 +0000 (15:03 +0100)]
Fixes #553 - another style of SVG fallback.
This addresses any version of SVG fallback when one layer is set to
none. It's not future proof though since:
* it may bo none + sth
* it may be an empty linear gradient
Once we have #407 in place we'll be able to actually see which URL is
a SVG and decide based on that.
Jakub Pawlowicz [Sun, 3 May 2015 13:29:15 +0000 (14:29 +0100)]
Fixes #558 - units in same selector merging.
We apparently had a `joinAt` in wrong order so adjacent properties
were not merged correctly when in compatibility mode.
Jakub Pawlowicz [Sun, 3 May 2015 11:09:50 +0000 (12:09 +0100)]
Fixes #551 - edge case in restructuring.
There was a bug in restructuring algorithm which allowed properties
to be moved too high up by using multi property moves.
This commit changes the behavior to drop a multi-property move on
a first occasion, i.e. when one of properties with different value
is encountered.
Jakub Pawlowicz [Tue, 28 Apr 2015 08:50:58 +0000 (09:50 +0100)]
Version 3.2.6 release notes.
Jakub Pawlowicz [Tue, 28 Apr 2015 08:47:47 +0000 (09:47 +0100)]
Fixes #550 - proper `contentSources` tracking.
This is a quick fix so an exception is not thrown, but the real question
will be how to preserve bootstrap maps as they are not tracked correctly due
to `sourcesContent` having wrong (?) source data. See #557.
Jakub Pawlowicz [Tue, 28 Apr 2015 08:41:26 +0000 (09:41 +0100)]
Fixes #556 - regression in IE backslash hacks.
Jakub Pawlowicz [Sat, 25 Apr 2015 08:35:41 +0000 (09:35 +0100)]
Version 3.2.5 release notes.
Jakub Pawlowicz [Sat, 25 Apr 2015 08:33:54 +0000 (09:33 +0100)]
Fixes #549 - keeping special comments in source maps.
Since in source maps we restore content multiple times, the total
important comment counter was not kept as a state thus handled
incorrectly.
Jakub Pawlowicz [Sat, 25 Apr 2015 08:15:31 +0000 (09:15 +0100)]
Fixes #543 - better "comment in body" handling.
So instead of keeping comments in a property list we get them out
of every property.
It is a bit tricky as comments escaped at the beginning need to be
tracked and saved, but ones from the middle or end of the value has
to be saved for later (see `innerProperties`) and tracked after the
property even if they are moved before it.
See tests for a better picture.
Jakub Pawlowicz [Fri, 24 Apr 2015 12:55:14 +0000 (13:55 +0100)]
Fixes #548 - regression in font minifying.
Ah, you nasty font shorthand - we need #254.
Jakub Pawlowicz [Fri, 24 Apr 2015 07:50:06 +0000 (08:50 +0100)]
Version 3.2.4 release notes.
Jakub Pawlowicz [Fri, 24 Apr 2015 07:47:02 +0000 (08:47 +0100)]
Fixes #546 - IE<11 `calc()` issue.
So IE<11 does not support a space between calc() and whatever comes
after it.
There's gonna be a follow up with #547 in 3.3.
Jakub Pawlowicz [Thu, 23 Apr 2015 20:41:25 +0000 (21:41 +0100)]
Fixes #544 - regression in same value merging.
Jakub Pawlowicz [Wed, 22 Apr 2015 21:16:14 +0000 (22:16 +0100)]
Version 3.2.3 release notes.
Jakub Pawlowicz [Wed, 22 Apr 2015 21:12:29 +0000 (22:12 +0100)]
Fixes #541 - outline-style auto in shorthand.
Apparently two values that overlap between style and color are 'auto'
and 'none'. We handled only the latter one correctly.
Jakub Pawlowicz [Tue, 21 Apr 2015 20:47:07 +0000 (21:47 +0100)]
Moves URL scanner into lib/urls/reduce.
Was named incorrectly before.
Jakub Pawlowicz [Tue, 21 Apr 2015 20:36:01 +0000 (21:36 +0100)]
Moves tokenizer code into lib/tokenizer.
Jakub Pawlowicz [Tue, 21 Apr 2015 19:54:35 +0000 (20:54 +0100)]
Cleans up tokenizer code getting rid of unnecessary state.
Jakub Pawlowicz [Tue, 21 Apr 2015 17:27:15 +0000 (18:27 +0100)]
Moves URL rebasing & rewriting into lib/urls.
After all those are not image-related anymore.
Jakub Pawlowicz [Tue, 21 Apr 2015 17:23:47 +0000 (18:23 +0100)]
Cleans up url rebase code getting rid of unnecessary state.
Jakub Pawlowicz [Tue, 21 Apr 2015 06:33:01 +0000 (07:33 +0100)]
Version 3.2.2 release notes.
Jakub Pawlowicz [Mon, 20 Apr 2015 21:24:01 +0000 (22:24 +0100)]
Fixes #537 - regression in simple optimizer.
Value minifiers do not work on many values at ones, so we need to
check the position when doing minification for properties that allow
more than one.
Jakub Pawlowicz [Mon, 20 Apr 2015 06:52:07 +0000 (07:52 +0100)]
Version 3.2.1 release notes.
Jakub Pawlowicz [Mon, 20 Apr 2015 06:40:41 +0000 (07:40 +0100)]
Fixes #534 - wrong block stringifying.
Flat blocks (`@font-face`) were omitted when adding optimization metadata,
thus an important attribute was incorrectly added.
Jakub Pawlowicz [Sun, 19 Apr 2015 15:56:42 +0000 (16:56 +0100)]
Fixes #436 - refactors URI rewriting.
Now it's way easier to understand.
Jakub Pawlowicz [Sun, 19 Apr 2015 14:01:57 +0000 (15:01 +0100)]
Bumps master to 3.3.0-pre.
Jakub Pawlowicz [Sun, 19 Apr 2015 13:52:14 +0000 (14:52 +0100)]
Version 3.2.0.
Jakub Pawlowicz [Sun, 19 Apr 2015 13:42:17 +0000 (14:42 +0100)]
Tweaks performance of multiproperty restructuring.
We compare property names first then head to comparing a body which
adds a stringify step.
Jakub Pawlowicz [Sun, 19 Apr 2015 13:29:31 +0000 (14:29 +0100)]
Bumps commander to 2.8.x.
Jakub Pawlowicz [Sun, 19 Apr 2015 12:18:12 +0000 (13:18 +0100)]
Improves multi-property restructuring.
It is not perfect though as not all properties which should be
moved are moved.
The current output is valid but not optimal.
See #533 for a follow up.
Jakub Pawlowicz [Sun, 19 Apr 2015 11:00:18 +0000 (12:00 +0100)]
Adds bootstrap to a reference list.
It'd be easier to catch errors as bootstrap has a quite edgy CSS.
Jakub Pawlowicz [Sun, 19 Apr 2015 08:45:44 +0000 (09:45 +0100)]
Fixes regression in restructuring vendor prefixed properties.
Jakub Pawlowicz [Sat, 18 Apr 2015 00:11:28 +0000 (01:11 +0100)]
Fixes #504 - keeping `url()` quotes.
It's off by default.
Kudos to @elcodedocle for inspiration.
Jakub Pawlowicz [Fri, 17 Apr 2015 07:15:13 +0000 (08:15 +0100)]
Fixes #524 - schedules subsequent inlining in next tick.
We don't need to call `response.end()` as it's called automatically
per spec: https://nodejs.org/api/http.html#http_http_get_options_callback
It may help solve the timeouts issue but certainly won't hurt.
Jakub Pawlowicz [Wed, 15 Apr 2015 22:43:46 +0000 (23:43 +0100)]
Fixes #529 - wrong font weight minification.
Actually reworked this minification so we should not have further
issues with it.
Jakub Pawlowicz [Wed, 15 Apr 2015 21:56:22 +0000 (22:56 +0100)]
Fixes #371 - SVG background hack.
It will work for background-image too, and in general for any
combination of two backgrounds where the latter is in the form of
`background:...,none;`.
Jakub Pawlowicz [Wed, 15 Apr 2015 07:38:20 +0000 (08:38 +0100)]
Removes unused properties from optimization wrapper.
Jakub Pawlowicz [Wed, 15 Apr 2015 07:25:02 +0000 (08:25 +0100)]
Fixes #528 - better support for IE<9 hacks.
Adds better hack handling in property overriding and compacting too.
Also normalizes all suffix hacks to '\0' as IE treats them equally.
Jakub Pawlowicz [Tue, 14 Apr 2015 20:39:38 +0000 (21:39 +0100)]
Fixes #521 - unit optimizations inside `calc()`.
It's used as a hack so we should not optimize such expressions.
Jakub Pawlowicz [Tue, 14 Apr 2015 07:29:15 +0000 (08:29 +0100)]
Fixes #526 - shorthand overriding into a function.
We should not merge into a shorthand that has functions as it will
reduce understandability.
Jakub Pawlowicz [Mon, 13 Apr 2015 20:51:04 +0000 (21:51 +0100)]
Fixes #487 - source map paths under Windows.
Apparently there's a bug in `source-map` library which does not
normalize paths in `source` field to proper URL format.
Thus source maps generated on Windows have backslashes instead of
forward slashes. We correct it manually to get same output on all
platforms.
Jakub Pawlowicz [Mon, 13 Apr 2015 20:31:09 +0000 (21:31 +0100)]
Fixes #508 - removing duplicate media queries.
It's same as with duplicated properties - they can be removed
no matter what.
Jakub Pawlowicz [Mon, 13 Apr 2015 07:16:40 +0000 (08:16 +0100)]
Fixes #507 - merging longhand into many shorthands.
This disables such merges altogether as it is not an easy feat, since:
* Merged property may be default;
* Merged property can be merged into many shorthands resulting in
longer value;
* There can be more properties waiting to be merged in.
Follow up in #527.
Jakub Pawlowicz [Sun, 12 Apr 2015 19:20:16 +0000 (20:20 +0100)]
Fixes #490 - multivalue vendor prefixed background.
Basically we were not testing if all values were overriddable, but just
the first one, which was failing if any further wasn't.
Note - we still need to fix shorthands being pulled into the last
shorthand only. It should likely be disabled altogether, which will solve
Jakub Pawlowicz [Sun, 12 Apr 2015 18:33:55 +0000 (19:33 +0100)]
Fixes #446 - adds fuzzy matching to `list-style`.
The order is not important so we'll try to match components
searching for compatible values.
Jakub Pawlowicz [Sun, 12 Apr 2015 17:18:38 +0000 (18:18 +0100)]
Fixes #468 - bumps `source-map` to 0.4.x.
Apparently it's not broken anymore as 0.3.x was giving some weird errors.
Jakub Pawlowicz [Sun, 12 Apr 2015 17:08:59 +0000 (18:08 +0100)]
Bumps JSHint to 2.7.x.
Jakub Pawlowicz [Sun, 12 Apr 2015 17:07:12 +0000 (18:07 +0100)]
Fixes shorthand test formatting.
Jakub Pawlowicz [Sun, 12 Apr 2015 16:16:55 +0000 (17:16 +0100)]
Improves `spaceAfterClosingBrace` compatibility handling.
It should be handled in stringifier and so it's now.
As it turns out the previous way was not giving optimal output when
building source maps either.
Jakub Pawlowicz [Sun, 12 Apr 2015 15:47:56 +0000 (16:47 +0100)]
Refactors source map tracking to allow multiple origins.
See https://github.com/jakubpawlowicz/clean-css/issues/414#issuecomment-
71010841
as a reference.
It allows introduced properties to have a mapping to many individual components.
Jakub Pawlowicz [Sun, 12 Apr 2015 14:36:08 +0000 (15:36 +0100)]
Fixes #399 - compacting with source maps.
Enables compacting when building source maps. This is possible thanks
to #429 being fixed.
Jakub Pawlowicz [Sun, 12 Apr 2015 13:56:44 +0000 (14:56 +0100)]
Simplifies value extraction in `can-override`.
We now pass wrapped properties only so there's no need anymore to
do an array check.
Jakub Pawlowicz [Sun, 12 Apr 2015 13:46:23 +0000 (14:46 +0100)]
Disables compacting when property is inherited.
See #525 for follow up.
Jakub Pawlowicz [Sun, 12 Apr 2015 11:24:27 +0000 (12:24 +0100)]
Updates history with info about #429.
Jakub Pawlowicz [Sun, 12 Apr 2015 11:16:42 +0000 (12:16 +0100)]
No shorthand compacting for less than 3 properties.
There is no shorthand for 2 properties so there is no way it may
shorten the content.
It speeds up processing by ~5%.
Jakub Pawlowicz [Sun, 12 Apr 2015 11:06:57 +0000 (12:06 +0100)]
Fixes overriding shorthands by shorthands.
Previously a more understandable value could not override less
understandable one, e.g. function was not overridden by a unit or a color.
Jakub Pawlowicz [Sun, 12 Apr 2015 10:40:05 +0000 (11:40 +0100)]
Fixes non-shorthand overriding.
So far it's limited to colors, transforms, and all longhands.
Jakub Pawlowicz [Sun, 12 Apr 2015 10:23:15 +0000 (11:23 +0100)]
Fixes an edge case in shorthand merging.
There was an issue with understandability when merging two shorthand
properties if one is a component of another.
Jakub Pawlowicz [Sun, 12 Apr 2015 09:49:26 +0000 (10:49 +0100)]
Readds shorthand compacting.
Basically tries to compact longhands into shorthands if possible,
caring about number of components and their understandability.
It DOES NOT re-add `!important`-based compacting which was previously
available because:
* it's logic is flawed in global context, when introduced important
property may override properties appearing later on;
* it's very uncommon to occur.
Jakub Pawlowicz [Sat, 11 Apr 2015 20:57:53 +0000 (21:57 +0100)]
Reworks multiplex components.
So far values were handled like: `[[['repeat']], [['repeat']]]` which
were incompatible with same properties but not components.
From now on it's the same for both, e.g. `[['repeat'], [','], ['repeat']]`.
Jakub Pawlowicz [Sat, 11 Apr 2015 09:14:33 +0000 (10:14 +0100)]
Restores compatibility in validator.
Fixes validator with proper OO as we need to handle state there to
keep a list of compatible units.
Jakub Pawlowicz [Fri, 10 Apr 2015 19:24:26 +0000 (20:24 +0100)]
Restores warnings on invalid properties.
Jakub Pawlowicz [Fri, 10 Apr 2015 19:08:08 +0000 (20:08 +0100)]
Fixes #500 - merging duplicate adjacent properties.
If values are same then there's no point keeping them as is.
Jakub Pawlowicz [Fri, 10 Apr 2015 18:47:27 +0000 (19:47 +0100)]
Readds a switch to disable compacting.
Fixes couple issues with invalid output and also removes performance
regression when doing advanced merging.
Jakub Pawlowicz [Fri, 10 Apr 2015 09:42:55 +0000 (10:42 +0100)]
Fixes restoring `background-color` in layered `background`.
Only the last layer can have a color set.
Jakub Pawlowicz [Fri, 10 Apr 2015 09:28:30 +0000 (10:28 +0100)]
Adds more override specs.
Jakub Pawlowicz [Fri, 10 Apr 2015 09:11:09 +0000 (10:11 +0100)]
Re-adds shorthand-shorthand merging for `border`.
`border` is a special case as any of its components are shorthands too.
Jakub Pawlowicz [Fri, 10 Apr 2015 08:31:18 +0000 (09:31 +0100)]
Re-adds `background` merging based on length.
Adds merging `background` shorthand with longhands based on a result
length so it's done only if the result is shorter.
Also adds deep cloning in addition to shallow one.
Jakub Pawlowicz [Wed, 8 Apr 2015 07:26:08 +0000 (08:26 +0100)]
Unifies all stringifying code.
Instead of having 3 of them (simple, source maps, and advanced
optimizations helpers), we have one now with a slightly different
storing logic for source maps.
Jakub Pawlowicz [Mon, 23 Mar 2015 20:36:07 +0000 (20:36 +0000)]
First step towards single tokenization.
* Removes tokenization from all steps in favour to single at the beginning.
* Adds tokenization of properties value by value instead of all in one piece, e.g.
`margin:0px 1px` gets tokenized into `margin`, `0px, and `1px`.
* Full tokenization means more detailed source maps too.
* Reworks override compactor and associated classes to use single tokenization.
* Simplifies override compactor code so it's much easier to understand.
* Adds loads of tests to override compactor and family.
Caveats / in progress:
* Shorthand compactor is turned off.
* Inherit compacting is gone (but will be back).
* Some multivalue background tests are failing.
* There's no way to turn off compacting (possible performance regression).
Jakub Pawlowicz [Tue, 24 Mar 2015 19:41:25 +0000 (19:41 +0000)]
Adds an option to Splitter helper to keep separators.
Jakub Pawlowicz [Sat, 11 Apr 2015 07:32:42 +0000 (08:32 +0100)]
Clarifies where `--source-map-inline-sources` output goes.
See https://github.com/jakubpawlowicz/clean-css/issues/397#issuecomment-
90896687
Jakub Pawlowicz [Wed, 8 Apr 2015 07:33:56 +0000 (08:33 +0100)]
Merge pull request #520 from XhmikosR/patch-3
Update README.md
Jakub Pawlowicz [Wed, 8 Apr 2015 07:32:26 +0000 (08:32 +0100)]
Merge pull request #519 from XhmikosR/patch-2
Update History.md
Jakub Pawlowicz [Wed, 8 Apr 2015 07:31:55 +0000 (08:31 +0100)]
Merge pull request #518 from XhmikosR/patch-1
Update commander to 2.7.x.
XhmikosR [Tue, 7 Apr 2015 07:45:42 +0000 (10:45 +0300)]
Update README.md
XhmikosR [Tue, 7 Apr 2015 07:37:29 +0000 (10:37 +0300)]
Update History.md
XhmikosR [Tue, 7 Apr 2015 07:32:05 +0000 (10:32 +0300)]
Update commander to 2.7.x.
Jakub Pawlowicz [Sat, 4 Apr 2015 08:14:28 +0000 (09:14 +0100)]
Version 3.1.9 release notes.
Jakub Pawlowicz [Sat, 4 Apr 2015 07:18:24 +0000 (08:18 +0100)]
Fixes #511 - calc, parentheses and advanced optimizations.
We're waiting for #429 to have it fixed properly, but here's an
intermediate fix.
Jakub Pawlowicz [Sun, 22 Mar 2015 17:07:02 +0000 (17:07 +0000)]
Adds small improvements to `reduceNonAdjacent` optimizer.
Jakub Pawlowicz [Sun, 22 Mar 2015 16:56:28 +0000 (16:56 +0000)]
Removes empty element removal from `mergeAdjacent`.
After all we do it now in one pass at the end.
Jakub Pawlowicz [Sun, 22 Mar 2015 16:33:13 +0000 (16:33 +0000)]
Speeds up duplication removal in advanced optimizer.
Instead of calculating id from selector and body it uses selector only
and body in a 2nd pass.
Jakub Pawlowicz [Wed, 18 Mar 2015 20:37:01 +0000 (20:37 +0000)]
Reworks tokenizer to operate on arrays.
* Uses arrays instead of hashes.
* Gets rid of cached metadata in favor to live-calculated values.
* Adds `removeEmpty` step in advanced optimizer to improve empty
elements removal.
* Cleans up simple optimizer iteration loop.
* Cleans up source map tracking.
Jakub Pawlowicz [Tue, 17 Mar 2015 20:15:52 +0000 (20:15 +0000)]
Version 3.1.8 release notes.
Jakub Pawlowicz [Tue, 17 Mar 2015 20:13:36 +0000 (20:13 +0000)]
Fixes #499 - too aggressive `-` removal.
So far we don't check if a stripped value is a numerical one so
we should be extra careful about removing such values.
Jakub Pawlowicz [Tue, 17 Mar 2015 19:33:07 +0000 (19:33 +0000)]
Fixes #498 - restructuring content with flexbox properties.
Flexbox is quite tricky as there are many different properties which
can't be reordered. Instead of implementing fine grained rules for all
of them we simply block flexbox from being restructured.
Potentially we should revisit it at some point to find out if restructuring
groups of properties would be a good idea.
Jakub Pawlowicz [Sun, 15 Mar 2015 08:42:15 +0000 (08:42 +0000)]
Fixes #397 - support for source map's sourcesContent property.
When handling input source map it checks whether sourcesContent is present
and if it is so then it's reused in the output source map.
Adds `sourceMapInlineSources` / `--source-map-inline-source` switches to
control whether an inlined source map is created or not.
In case an input source map with a `sourcesContent` field is provided
then all sources from that source map are carried over to the output source map.
Jakub Pawlowicz [Sun, 15 Mar 2015 08:42:47 +0000 (08:42 +0000)]
Fixed remote asset rebasing when passing data as a hash.
Jakub Pawlowicz [Mon, 16 Mar 2015 19:17:53 +0000 (19:17 +0000)]
Version 3.1.7 release notes.
Jakub Pawlowicz [Mon, 16 Mar 2015 18:52:29 +0000 (18:52 +0000)]
Fixes #496 - space after bracket removal inside `calc`.
In case of `) -` and `) +` in `calc` expressions a space should not
be removed at all times.
Jakub Pawlowicz [Sun, 15 Mar 2015 21:08:10 +0000 (21:08 +0000)]
Improves path resolution inside source maps.
Source files referenced inside source maps are no properly rebased
in many scenarios:
* Full resolution for source maps referenced by a path.
* Full resolution for source maps passed to `#minify` inside a hash.
* Full resolution for remote source maps.
* No resolution if path to source map not given.
Jakub Pawlowicz [Sun, 15 Mar 2015 16:47:23 +0000 (16:47 +0000)]
Adds better internal target handling.
`target` option is now resolved inside main module.
Also added `options.explicitTarget` which resolves to true if target
was passed explicitely.
Jakub Pawlowicz [Sun, 15 Mar 2015 16:27:57 +0000 (16:27 +0000)]
Removes absolute path resolver from tokenizer.
Jakub Pawlowicz [Sun, 15 Mar 2015 15:50:01 +0000 (15:50 +0000)]
Changes internal representation of all paths.
Paths has to be either:
* relative to root path if referencing a local file
* absolute for all URLs.
Jakub Pawlowicz [Sun, 15 Mar 2015 15:08:04 +0000 (15:08 +0000)]
Clean ups tests with topics' lazy evaluation.
It is easier to debug tests when all code is lazily evaluated, means
all topics are functions or static values, not calls to objects.
Jakub Pawlowicz [Sun, 15 Mar 2015 14:05:30 +0000 (14:05 +0000)]
Makes `root` option implicitely default to `process.cwd()` unless given.
Jakub Pawlowicz [Thu, 12 Mar 2015 19:15:03 +0000 (19:15 +0000)]
Version 3.1.6 release notes.