├── test └── fixture │ ├── compress │ ├── empty.css │ ├── empty.min.css │ ├── atrules │ │ ├── empty.min.css │ │ ├── _media-6.min.css │ │ ├── _supports-3.min.css │ │ ├── keyframes-10.min.css │ │ ├── import-4.min.css │ │ ├── import-2.min.css │ │ ├── import-3.min.css │ │ ├── import-4.css │ │ ├── media-1.min.css │ │ ├── media-2.min.css │ │ ├── import-1.min.css │ │ ├── keyframes-2.min.css │ │ ├── media-4.min.css │ │ ├── supports-2.min.css │ │ ├── import-1.css │ │ ├── import-2.css │ │ ├── media-7.min.css │ │ ├── media-4.css │ │ ├── media-3.min.css │ │ ├── import-3.css │ │ ├── media-5.min.css │ │ ├── keyframes-1.min.css │ │ ├── media-merge │ │ │ ├── last-comment.min.css │ │ │ ├── keep-query-order.min.css │ │ │ ├── single-query.min.css │ │ │ ├── other-at-rule.min.css │ │ │ ├── more-nested-queries.min.css │ │ │ ├── multiple-queries.min.css │ │ │ ├── _nested-queries.min.css │ │ │ ├── other-at-rule.css │ │ │ ├── last-comment.css │ │ │ └── keep-query-order.css │ │ ├── keyframes-12.min.css │ │ ├── keyframes-8.min.css │ │ ├── supports-1.min.css │ │ ├── keyframes-11.min.css │ │ ├── media-1.css │ │ ├── media-2.css │ │ ├── media-3.css │ │ ├── media-5.css │ │ ├── keyframes-2.css │ │ ├── keyframes-9.min.css │ │ ├── keyframes-6.min.css │ │ ├── keyframes-1.css │ │ ├── _media-6.css │ │ ├── supports-2.css │ │ ├── supports-1.css │ │ ├── keyframes-3.min.css │ │ ├── keyframes-3.css │ │ ├── empty.css │ │ ├── keyframes-4.min.css │ │ ├── media-8.min.css │ │ ├── keyframes-10.css │ │ ├── _supports-3.css │ │ ├── keyframes-12.css │ │ ├── keyframes-8.css │ │ └── media-7.css │ ├── issue │ │ ├── _135.min.css │ │ ├── 39-2.min.css │ │ ├── 45.min.css │ │ ├── 50-1.min.css │ │ ├── 39-11.min.css │ │ ├── 39-31.min.css │ │ ├── 39-9.min.css │ │ ├── 53-1.css │ │ ├── 39-10.min.css │ │ ├── 39-12.min.css │ │ ├── 39-14.min.css │ │ ├── 39-17.min.css │ │ ├── 39-21.min.css │ │ ├── 39-24.min.css │ │ ├── 48.min.css │ │ ├── 53-1.min.css │ │ ├── 53-2.css │ │ ├── 78-1.min.css │ │ ├── 78-2.min.css │ │ ├── 78-4.min.css │ │ ├── _135.css │ │ ├── 39-1.min.css │ │ ├── 39-13.min.css │ │ ├── 39-15.min.css │ │ ├── 39-16.min.css │ │ ├── 39-20.min.css │ │ ├── 39-5.min.css │ │ ├── 45.css │ │ ├── 53-2.min.css │ │ ├── 79-2.min.css │ │ ├── 88.min.css │ │ ├── 39-18.min.css │ │ ├── 39-19.min.css │ │ ├── 39-21.css │ │ ├── 39-22.min.css │ │ ├── 39-30.min.css │ │ ├── 39-8.min.css │ │ ├── 50-1.css │ │ ├── 76-3.min.css │ │ ├── 76-4.min.css │ │ ├── 39-25.min.css │ │ ├── 39-29.min.css │ │ ├── 54.min.css │ │ ├── 57-1.min.css │ │ ├── 76-2.min.css │ │ ├── 92.min.css │ │ ├── _39-27.min.css │ │ ├── 16.min.css │ │ ├── 39-23.min.css │ │ ├── 39-26.min.css │ │ ├── 39-3.min.css │ │ ├── 39-4.min.css │ │ ├── 39-6.min.css │ │ ├── 39-7.min.css │ │ ├── 52-1.css │ │ ├── 39-28.min.css │ │ ├── 52-1.min.css │ │ ├── 52-2.min.css │ │ ├── 71.min.css │ │ ├── 92.css │ │ ├── 16.css │ │ ├── 57-2.min.css │ │ ├── 39-1.css │ │ ├── 57-1.css │ │ ├── 170.min.css │ │ ├── 39-2.css │ │ ├── 39-8.css │ │ ├── 39-9.css │ │ ├── 81-2.min.css │ │ ├── 138-1.min.css │ │ ├── 39-10.css │ │ ├── 39-11.css │ │ ├── 39-12.css │ │ ├── 39-17.css │ │ ├── 79-2.css │ │ ├── 88.css │ │ ├── 39-13.css │ │ ├── 39-14.css │ │ ├── 39-15.css │ │ ├── 39-16.css │ │ ├── 39-18.css │ │ ├── 39-5.css │ │ ├── 39-7.css │ │ ├── 39-20.css │ │ ├── 71.css │ │ ├── 76-5.min.css │ │ ├── 78-3.min.css │ │ ├── 39-19.css │ │ ├── 39-25.css │ │ ├── 39-26.css │ │ ├── 39-3.css │ │ ├── 48.css │ │ ├── 39-24.css │ │ ├── 39-4.css │ │ ├── 52-2.css │ │ ├── 76-1.min.css │ │ ├── 39-28.css │ │ ├── 76-5-1.min.css │ │ ├── 39-23.css │ │ ├── 76-3.css │ │ ├── 81-2.css │ │ ├── 81-3.min.css │ │ ├── 138-2.min.css │ │ ├── 167.min.css │ │ ├── 39-22.css │ │ ├── 39-29.css │ │ ├── 76-1.css │ │ ├── 39-6.css │ │ ├── 39-31.css │ │ ├── 78-3.css │ │ ├── 138-1.css │ │ ├── 79-1.min.css │ │ ├── _39-27.css │ │ ├── 76-2.css │ │ ├── 78-2.css │ │ ├── 81-1.min.css │ │ ├── 78-4.css │ │ ├── 134.min.css │ │ ├── 78-1.css │ │ ├── 57-2.css │ │ ├── 170.css │ │ ├── 81-3.css │ │ ├── 138-2.css │ │ ├── 79-1.css │ │ ├── 81-1.css │ │ ├── 165.min.css │ │ ├── 76-5.css │ │ ├── 153.min.css │ │ ├── 76-5-1.css │ │ ├── 39-30.css │ │ ├── 317.min.css │ │ ├── 167.css │ │ ├── 226-1.min.css │ │ ├── 226-2.min.css │ │ ├── 226-3.min.css │ │ ├── 165.css │ │ ├── 76-4.css │ │ ├── 54.css │ │ ├── 317.css │ │ ├── 134.css │ │ ├── 50-2.min.css │ │ ├── 226-1.css │ │ ├── 226-2.css │ │ ├── 226-3.css │ │ ├── 286.min.css │ │ ├── 50-2.css │ │ └── 153.css │ ├── mess │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── _3.min.css │ │ ├── 1.css │ │ ├── _3.css │ │ └── 2.css │ ├── bad-declaration.min.css │ ├── css3 │ │ ├── selectors.part2-1.min.css │ │ ├── selectors.part2-2.min.css │ │ ├── selectors.part2-1.css │ │ ├── selectors.part2-2.css │ │ ├── selectors.part2-3.min.css │ │ ├── selectors.part2-39.css │ │ ├── selectors.part2-39.min.css │ │ ├── selectors.part2-40.min.css │ │ ├── selectors.part2-41.min.css │ │ ├── selectors.part2-42.min.css │ │ ├── selectors.part2-1-comments.min.css │ │ ├── selectors.part2-10.css │ │ ├── selectors.part2-10.min.css │ │ ├── selectors.part2-2-comments.min.css │ │ ├── selectors.part2-21.css │ │ ├── selectors.part2-21.min.css │ │ ├── selectors.part2-22.css │ │ ├── selectors.part2-22.min.css │ │ ├── selectors.part2-23.css │ │ ├── selectors.part2-23.min.css │ │ ├── selectors.part2-24.css │ │ ├── selectors.part2-24.min.css │ │ ├── selectors.part2-25.css │ │ ├── selectors.part2-25.min.css │ │ ├── selectors.part2-26.css │ │ ├── selectors.part2-26.min.css │ │ ├── selectors.part2-27.css │ │ ├── selectors.part2-27.min.css │ │ ├── selectors.part2-28.min.css │ │ ├── selectors.part2-29.css │ │ ├── selectors.part2-29.min.css │ │ ├── selectors.part2-3.css │ │ ├── selectors.part2-30.min.css │ │ ├── selectors.part2-31.css │ │ ├── selectors.part2-31.min.css │ │ ├── selectors.part2-34.css │ │ ├── selectors.part2-34.min.css │ │ ├── selectors.part2-35.css │ │ ├── selectors.part2-35.min.css │ │ ├── selectors.part2-36.css │ │ ├── selectors.part2-36.min.css │ │ ├── selectors.part2-37.css │ │ ├── selectors.part2-37.min.css │ │ ├── selectors.part2-38.min.css │ │ ├── selectors.part2-40.css │ │ ├── selectors.part2-41.css │ │ ├── selectors.part2-42.css │ │ ├── selectors.part2-10-comments.min.css │ │ ├── selectors.part2-15.css │ │ ├── selectors.part2-15.min.css │ │ ├── selectors.part2-16.css │ │ ├── selectors.part2-16.min.css │ │ ├── selectors.part2-17.min.css │ │ ├── selectors.part2-18.css │ │ ├── selectors.part2-18.min.css │ │ ├── selectors.part2-19.css │ │ ├── selectors.part2-19.min.css │ │ ├── selectors.part2-20.css │ │ ├── selectors.part2-20.min.css │ │ ├── selectors.part2-22-comments.min.css │ │ ├── selectors.part2-28.css │ │ ├── selectors.part2-3-comments.min.css │ │ ├── selectors.part2-30.css │ │ ├── selectors.part2-32.css │ │ ├── selectors.part2-32.min.css │ │ ├── selectors.part2-33.min.css │ │ ├── selectors.part2-37-comments.min.css │ │ ├── selectors.part2-38.css │ │ ├── selectors.part2-39-comments.min.css │ │ ├── selectors.part2-4.min.css │ │ ├── selectors.part2-40-comments.min.css │ │ ├── selectors.part2-41-comments.min.css │ │ ├── selectors.part2-42-comments.min.css │ │ ├── selectors.part2-5.min.css │ │ ├── selectors.part2-6.min.css │ │ ├── selectors.part2-7.min.css │ │ ├── selectors.part2-8.min.css │ │ ├── selectors.part2-9.min.css │ │ ├── selectors.part2-12.min.css │ │ ├── selectors.part2-13.css │ │ ├── selectors.part2-13.min.css │ │ ├── selectors.part2-17.css │ │ ├── selectors.part2-21-comments.min.css │ │ ├── selectors.part2-23-comments.min.css │ │ ├── selectors.part2-24-comments.min.css │ │ ├── selectors.part2-25-comments.min.css │ │ ├── selectors.part2-26-comments.min.css │ │ ├── selectors.part2-27-comments.min.css │ │ ├── selectors.part2-28-comments.min.css │ │ ├── selectors.part2-29-comments.min.css │ │ ├── selectors.part2-30-comments.min.css │ │ ├── selectors.part2-31-comments.min.css │ │ ├── selectors.part2-33.css │ │ ├── selectors.part2-34-comments.min.css │ │ ├── selectors.part2-35-comments.min.css │ │ ├── selectors.part2-36-comments.min.css │ │ ├── selectors.part2-38-comments.min.css │ │ ├── selectors.part2-4.css │ │ ├── selectors.part2-5.css │ │ ├── selectors.part2-6.css │ │ ├── selectors.part2-7.css │ │ ├── selectors.part2-8.css │ │ ├── selectors.part2-9.css │ │ ├── selectors.part2-11-comments.min.css │ │ ├── selectors.part2-12.css │ │ ├── selectors.part2-13-comments.min.css │ │ ├── selectors.part2-14.css │ │ ├── selectors.part2-14.min.css │ │ ├── selectors.part2-15-comments.min.css │ │ ├── selectors.part2-16-comments.min.css │ │ ├── selectors.part2-17-comments.min.css │ │ ├── selectors.part2-18-comments.min.css │ │ ├── selectors.part2-19-comments.min.css │ │ ├── selectors.part2-20-comments.min.css │ │ ├── selectors.part2-32-comments.min.css │ │ ├── selectors.part2-33-comments.min.css │ │ ├── selectors.part2-4-comments.min.css │ │ ├── selectors.part2-5-comments.min.css │ │ ├── selectors.part2-6-comments.min.css │ │ ├── selectors.part2-7-comments.min.css │ │ ├── selectors.part2-8-comments.min.css │ │ ├── selectors.part2-9-comments.min.css │ │ ├── selectors.part2-12-comments.min.css │ │ ├── selectors.part2-14-comments.min.css │ │ ├── selectors.part2-11.min.css │ │ ├── selectors.part2-1-comments.css │ │ ├── selectors.part2-2-comments.css │ │ ├── selectors.part2-10-comments.css │ │ ├── selectors.part2-21-comments.css │ │ ├── selectors.part2-22-comments.css │ │ ├── selectors.part2-23-comments.css │ │ ├── selectors.part2-24-comments.css │ │ ├── selectors.part2-25-comments.css │ │ ├── selectors.part2-26-comments.css │ │ ├── selectors.part2-27-comments.css │ │ ├── selectors.part2-29-comments.css │ │ ├── selectors.part2-31-comments.css │ │ ├── selectors.part2-34-comments.css │ │ ├── selectors.part2-35-comments.css │ │ ├── selectors.part2-36-comments.css │ │ ├── selectors.part2-37-comments.css │ │ ├── selectors.part2-15-comments.css │ │ ├── selectors.part2-16-comments.css │ │ ├── selectors.part2-18-comments.css │ │ ├── selectors.part2-19-comments.css │ │ ├── selectors.part2-20-comments.css │ │ ├── selectors.part2-30-comments.css │ │ ├── selectors.part2-32-comments.css │ │ ├── selectors.part2-39-comments.css │ │ ├── selectors.part2-17-comments.css │ │ ├── selectors.part2-33-comments.css │ │ ├── selectors.part2-40-comments.css │ │ ├── selectors.part2-41-comments.css │ │ ├── selectors.part2-42-comments.css │ │ ├── selectors.part2-3-comments.css │ │ ├── selectors.part2-38-comments.css │ │ ├── selectors.part2-28-comments.css │ │ ├── selectors.part2-11-comments.css │ │ ├── selectors.part2-11.css │ │ ├── selectors.part2-13-comments.css │ │ ├── selectors.part2-12-comments.css │ │ ├── selectors.part2-14-comments.css │ │ ├── selectors.part2-4-comments.css │ │ ├── selectors.part2-9-comments.css │ │ ├── selectors.part2-5-comments.css │ │ ├── selectors.part2-6-comments.css │ │ ├── selectors.part2-7-comments.css │ │ └── selectors.part2-8-comments.css │ ├── restructure.equal │ │ ├── 1.min.css │ │ ├── 5.min.css │ │ ├── 2.min.css │ │ ├── 3.min.css │ │ ├── 4.min.css │ │ ├── 6.min.css │ │ ├── 7.min.css │ │ ├── 8.min.css │ │ ├── 1.css │ │ ├── 10.min.css │ │ ├── 9.min.css │ │ ├── 7.css │ │ ├── 2.css │ │ ├── 6.css │ │ ├── 11.min.css │ │ ├── 12.min.css │ │ ├── 3.css │ │ ├── 4.css │ │ ├── 5.css │ │ ├── 9.css │ │ ├── 11.css │ │ ├── 12.css │ │ ├── 8.css │ │ ├── 13.min.css │ │ ├── 14.min.css │ │ ├── 10.css │ │ ├── 13.css │ │ └── 14.css │ ├── color │ │ ├── issue-176.min.css │ │ ├── rgba-1.min.css │ │ ├── hex-normalize.min.css │ │ ├── keyword-normalize.min.css │ │ ├── hex-normalize.css │ │ ├── keyword-normalize.css │ │ ├── rgb-clipping.min.css │ │ ├── rgb-percent.min.css │ │ ├── hls.min.css │ │ ├── hlsa.min.css │ │ ├── rgba.min.css │ │ ├── issue-176.css │ │ ├── hls.css │ │ ├── hlsa.css │ │ ├── rgb-percent.css │ │ ├── rgb-clipping.css │ │ ├── rgba-1.css │ │ ├── rgba.css │ │ ├── keyword-to-hex-1.min.css │ │ └── rgba-0.min.css │ ├── css21 │ │ ├── part4.3.2-1.css │ │ ├── part4.3.2-1.min.css │ │ ├── part4.3.2-2.css │ │ ├── part4.3.2-2.min.css │ │ ├── part4.3.2-4.css │ │ ├── part4.3.2-4.min.css │ │ ├── part4.3.6-1.css │ │ ├── part4.3.6-1.min.css │ │ ├── part4.3.6-2.min.css │ │ ├── part4.3.6-3.min.css │ │ ├── part4.3.7-5.min.css │ │ ├── part4.4-1.css │ │ ├── part4.4-3.min.css │ │ ├── part6.3-1.css │ │ ├── part6.4.2-1.min.css │ │ ├── part4.3.2-3.css │ │ ├── part4.3.2-3.min.css │ │ ├── part4.3.2-5.css │ │ ├── part4.3.2-5.min.css │ │ ├── part4.3.2-6.css │ │ ├── part4.3.2-6.min.css │ │ ├── part4.3.2-7.css │ │ ├── part4.3.2-7.min.css │ │ ├── part4.3.2-8.css │ │ ├── part4.3.2-8.min.css │ │ ├── part4.3.6-2.css │ │ ├── part4.3.6-4.min.css │ │ ├── part4.3.6-5.min.css │ │ ├── part4.3.7-6.min.css │ │ ├── part4.4-1.min.css │ │ ├── part4.4-2.min.css │ │ ├── part6.3-1.min.css │ │ ├── part6.3-2.css │ │ ├── part6.4.2-1.css │ │ ├── part6.4.2-2.min.css │ │ ├── part7-1.css │ │ ├── part7-1.min.css │ │ ├── part4.3.6-3.css │ │ ├── part4.3.6-5.css │ │ ├── part4.3.7-1.css │ │ ├── part4.3.7-1.min.css │ │ ├── part4.3.7-3.css │ │ ├── part4.3.7-3.min.css │ │ ├── part4.4-2.css │ │ ├── part4.3.4-9.min.css │ │ ├── part4.3.6-4.css │ │ ├── part4.3.7-2.css │ │ ├── part4.3.7-2.min.css │ │ ├── part4.3.7-4.css │ │ ├── part4.3.7-4.min.css │ │ ├── part6.3-2.min.css │ │ ├── part6.3-3.css │ │ ├── part7-2.min.css │ │ ├── part4.3.4-9.css │ │ ├── part4.3.7-5.css │ │ ├── part4.4-3.css │ │ ├── part6.3-3.min.css │ │ ├── part6.3-4.css │ │ ├── part6.3-6.min.css │ │ ├── part6.4.2-3.min.css │ │ ├── part7-2.css │ │ ├── part4.3.4-1.min.css │ │ ├── part4.3.4-5.min.css │ │ ├── part4.3.7-6.css │ │ ├── part6.3-4.min.css │ │ ├── part4.3.4-1.css │ │ ├── part4.3.4-2.min.css │ │ ├── part4.3.4-6.min.css │ │ ├── part6.3-5.css │ │ ├── part6.3-5.min.css │ │ ├── part6.4.2-2.css │ │ ├── part4.3.4-2.css │ │ ├── part4.3.4-5.css │ │ ├── part4.3.4-6.css │ │ ├── part15.6.min.css │ │ ├── part4.3.4-3.min.css │ │ ├── part4.3.4-7.min.css │ │ ├── part4.3.4-3.css │ │ ├── part4.3.4-7.css │ │ ├── part4.3.4-4.min.css │ │ ├── part4.3.4-4.css │ │ ├── part4.3.4-8.min.css │ │ ├── part4.3.4-8.css │ │ ├── part6.3-6.css │ │ ├── part6.4.2-3.css │ │ ├── part15.6.css │ │ ├── part4.3.6-7.min.css │ │ ├── part4.3.6-8.min.css │ │ ├── part4.3.2-9.min.css │ │ ├── part4.3.20.min.css │ │ ├── part4.3.6-7.css │ │ └── part4.3.6-8.css │ ├── shorthand.margin │ │ ├── 3.min.css │ │ ├── 7.min.css │ │ ├── 6.min.css │ │ ├── 5.min.css │ │ ├── 11.min.css │ │ ├── 2.min.css │ │ ├── 1.min.css │ │ ├── 10.min.css │ │ ├── 2.css │ │ ├── 4.min.css │ │ ├── _12.min.css │ │ ├── 7.css │ │ ├── 3.css │ │ ├── 4-1.min.css │ │ ├── 10.css │ │ ├── 6.css │ │ ├── 9.min.css │ │ ├── 1.css │ │ ├── 5.css │ │ ├── 11.css │ │ ├── 8.min.css │ │ └── _12.css │ ├── shorthand.padding │ │ ├── 3.min.css │ │ ├── 7.min.css │ │ ├── 6.min.css │ │ ├── 5.min.css │ │ ├── 2.min.css │ │ ├── 1.min.css │ │ ├── 2.css │ │ ├── 4.min.css │ │ ├── 7.css │ │ ├── 3.css │ │ ├── 4-1.min.css │ │ ├── 6.css │ │ ├── 1.css │ │ └── 5.css │ ├── restructure.empty.atrule │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 1.css │ │ └── 2.css │ ├── restructure.equal.selectors │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 1.css │ │ ├── 3.min.css │ │ ├── 2.css │ │ └── 3.css │ ├── restructure.merge │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 3.min.css │ │ ├── 13.min.css │ │ ├── 5.min.css │ │ ├── issue-280-1.min.css │ │ ├── 4.min.css │ │ ├── 9.min.css │ │ ├── issue-280-3.min.css │ │ ├── 1.css │ │ ├── 14.min.css │ │ ├── 2.css │ │ ├── 6.min.css │ │ ├── issue-280-4.min.css │ │ ├── 8.min.css │ │ ├── 15.min.css │ │ ├── issue-291.min.css │ │ ├── 17.min.css │ │ ├── 16.min.css │ │ ├── 18.min.css │ │ ├── 11.min.css │ │ ├── 3.css │ │ ├── 7.min.css │ │ ├── 12.min.css │ │ ├── 4.css │ │ ├── issue-280-2.min.css │ │ ├── 10.min.css │ │ ├── 9.css │ │ ├── 15.css │ │ ├── issue-280-1.css │ │ ├── issue-280-3.css │ │ ├── 16.css │ │ ├── 17.css │ │ ├── 18.css │ │ ├── 13.css │ │ ├── issue-280-4.css │ │ ├── 14.css │ │ ├── 6.css │ │ ├── 8.css │ │ ├── 5.css │ │ ├── issue-280-2.css │ │ ├── 7.css │ │ ├── issue-291.css │ │ └── 11.css │ ├── shorthand.margin.unary │ │ ├── 3.min.css │ │ ├── 7.min.css │ │ ├── 6.min.css │ │ ├── 5.min.css │ │ ├── 2.min.css │ │ ├── 1.min.css │ │ ├── 2.css │ │ ├── 4.min.css │ │ ├── 7.css │ │ ├── 3.css │ │ ├── 4-1.min.css │ │ ├── 6.css │ │ ├── 1.css │ │ └── 5.css │ ├── restructure.margin │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 2-1.min.css │ │ ├── 1.css │ │ ├── 3.min.css │ │ ├── 2.css │ │ ├── 2-1.css │ │ └── 3.css │ ├── restructure.padding │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 3.min.css │ │ ├── 1.css │ │ ├── 2.css │ │ └── 3.css │ ├── units │ │ ├── 1.min.css │ │ ├── 3.min.css │ │ ├── 2.min.css │ │ ├── 1.css │ │ ├── 3.css │ │ └── 2.css │ ├── attrib.string │ │ ├── 3.min.css │ │ ├── 3.css │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 1.css │ │ └── 2.css │ ├── bad-declaration.css │ ├── colormark.min.css │ ├── dont.min.css │ ├── trbl │ │ ├── 2.min.css │ │ ├── 3.min.css │ │ ├── 1.min.css │ │ ├── 4.min.css │ │ ├── issue297.min.css │ │ ├── 3.css │ │ ├── 2.css │ │ ├── 4.css │ │ ├── 1.css │ │ └── issue297.css │ ├── unicode-in-ident.min.css │ ├── restructure.background │ │ ├── 3.min.css │ │ └── 3.css │ ├── restructure.border │ │ ├── 1.min.css │ │ ├── 2.min.css │ │ ├── 1.css │ │ └── 2.css │ ├── comment │ │ ├── 1.min.css │ │ ├── 4.min.css │ │ ├── 5.css │ │ ├── 5.min.css │ │ ├── 4.css │ │ ├── 1.css │ │ ├── 2.min.css │ │ ├── 3.min.css │ │ ├── 2.css │ │ └── 3.css │ ├── custom-property-issue318.min.css │ ├── dont.background │ │ ├── 1.min.css │ │ ├── 1.css │ │ ├── 2.min.css │ │ ├── 2.css │ │ └── 3.min.css │ ├── not.min.css │ ├── selector │ │ ├── 1.min.css │ │ └── 1.css │ ├── position-sticky.min.css │ ├── cursor-issue306.min.css │ ├── shorthand.margin.padding.min.css │ ├── unicode-range.min.css │ ├── dont.css │ ├── important.min.css │ ├── position-sticky.css │ ├── initial.background.min.css │ ├── complicated │ │ ├── _2.min.css │ │ ├── _3.min.css │ │ ├── _2.css │ │ ├── _3.css │ │ └── 1.min.css │ ├── cursor-issue306.css │ ├── calc.min.css │ ├── property-merge │ │ ├── text-align.min.css │ │ ├── 3.min.css │ │ ├── 2.min.css │ │ ├── 1.min.css │ │ ├── 3.css │ │ ├── text-align.css │ │ └── 2.css │ ├── initial.font.min.css │ ├── unicode-range.css │ ├── unicode-in-ident.css │ ├── display.min.css │ ├── colormark.css │ ├── restructure.filter.min.css │ ├── custom-property-issue318.css │ ├── none-to-zero.min.css │ ├── important2.min.css │ ├── restructure.filter.css │ ├── url.min.css │ ├── hack9.min.css │ ├── important.css │ ├── not.css │ ├── redundant-universal.min.css │ ├── cursor.min.css │ ├── hack0.min.css │ ├── initial.background.css │ ├── bad-color.min.css │ ├── shorthand.margin.padding.css │ ├── none-to-zero.css │ ├── important2.css │ ├── calc.css │ ├── disjoin │ │ └── 1.min.css │ ├── display.css │ ├── initial.font.css │ ├── url.css │ └── bad-color.css │ ├── usage │ ├── scopes-1.min.css │ ├── ids-1.css.usage │ ├── atrule-1.css.usage │ ├── tags-1.css.usage │ ├── classes-1.css.usage │ ├── black-white-1.min.css │ ├── scopes-1.css │ ├── atrule-1.min.css │ ├── scopes-3.min.css │ ├── scopes-1.css.usage │ ├── scopes-3.css.usage │ ├── blacklist-1.css.usage │ ├── black-white-1.css │ ├── blacklist-1.min.css │ ├── scopes-3.css │ ├── scopes-2.min.css │ ├── black-white-1.css.usage │ ├── scopes-2.css.usage │ ├── ids-1.min.css │ ├── classes-1.min.css │ ├── blacklist-1.css │ ├── tags-1.min.css │ ├── scopes-2.css │ └── atrule-1.css │ └── similarSelectors.json ├── dist ├── .npmignore └── .gitignore ├── .gitignore ├── docs ├── avito.png └── yandex.png ├── lib ├── clean │ ├── Comment.js │ ├── Declaration.js │ └── Operator.js └── replace │ ├── Atrule.js │ └── String.js ├── .travis.yml └── .editorconfig /test/fixture/compress/empty.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixture/compress/empty.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/.npmignore: -------------------------------------------------------------------------------- 1 | * 2 | !csso-browser.js 3 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/empty.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/_135.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/_media-6.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !.npmignore 4 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/_supports-3.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-10.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixture/compress/mess/1.min.css: -------------------------------------------------------------------------------- 1 | .test{color:1em} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /coverage/ 3 | .idea 4 | -------------------------------------------------------------------------------- /test/fixture/compress/bad-declaration.min.css: -------------------------------------------------------------------------------- 1 | b{bar:1} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-1.min.css: -------------------------------------------------------------------------------- 1 | *{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-2.min.css: -------------------------------------------------------------------------------- 1 | E{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-2.min.css: -------------------------------------------------------------------------------- 1 | a:test{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/45.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:-1em 0 0} -------------------------------------------------------------------------------- /test/fixture/compress/issue/50-1.min.css: -------------------------------------------------------------------------------- 1 | a{src:x;src:y} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/1.min.css: -------------------------------------------------------------------------------- 1 | a,b{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/5.min.css: -------------------------------------------------------------------------------- 1 | a,b{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-4.min.css: -------------------------------------------------------------------------------- 1 | @unknown; 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/issue-176.min.css: -------------------------------------------------------------------------------- 1 | a{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgba-1.min.css: -------------------------------------------------------------------------------- 1 | a,b,c{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-1.css: -------------------------------------------------------------------------------- 1 | h1 { margin: 0.5em } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-1.min.css: -------------------------------------------------------------------------------- 1 | h1{margin:.5em} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-2.css: -------------------------------------------------------------------------------- 1 | h1 { margin: 1ex } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-2.min.css: -------------------------------------------------------------------------------- 1 | h1{margin:1ex} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-4.css: -------------------------------------------------------------------------------- 1 | h1 { margin: 0.5in } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-4.min.css: -------------------------------------------------------------------------------- 1 | h1{margin:.5in} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-1.css: -------------------------------------------------------------------------------- 1 | em { color: #f00 } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-1.min.css: -------------------------------------------------------------------------------- 1 | em{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-2.min.css: -------------------------------------------------------------------------------- 1 | em{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-3.min.css: -------------------------------------------------------------------------------- 1 | em{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-5.min.css: -------------------------------------------------------------------------------- 1 | a{b:"abcdefg"} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.4-1.css: -------------------------------------------------------------------------------- 1 | @charset "ISO-8859-1"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.4-3.min.css: -------------------------------------------------------------------------------- 1 | @charset "test0"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-1.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.4.2-1.min.css: -------------------------------------------------------------------------------- 1 | a{p:v!important} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-1.css: -------------------------------------------------------------------------------- 1 | * { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-2.css: -------------------------------------------------------------------------------- 1 | E { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-3.min.css: -------------------------------------------------------------------------------- 1 | E[foo]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-39.css: -------------------------------------------------------------------------------- 1 | E F { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-39.min.css: -------------------------------------------------------------------------------- 1 | E F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-40.min.css: -------------------------------------------------------------------------------- 1 | E>F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-41.min.css: -------------------------------------------------------------------------------- 1 | E+F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-42.min.css: -------------------------------------------------------------------------------- 1 | E~F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-11.min.css: -------------------------------------------------------------------------------- 1 | a,x:hover{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-31.min.css: -------------------------------------------------------------------------------- 1 | :b,a{margin:1px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-9.min.css: -------------------------------------------------------------------------------- 1 | a,x:link{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/53-1.css: -------------------------------------------------------------------------------- 1 | .a{margin:0 -1px 0 -2px} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/2.min.css: -------------------------------------------------------------------------------- 1 | a,b,c{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/3.min.css: -------------------------------------------------------------------------------- 1 | a,b{p0:v;p1:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/4.min.css: -------------------------------------------------------------------------------- 1 | a,b{p0:v;p1:v} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/3.min.css: -------------------------------------------------------------------------------- 1 | a{margin:1px} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/7.min.css: -------------------------------------------------------------------------------- 1 | a{margin:0} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/3.min.css: -------------------------------------------------------------------------------- 1 | a{padding:1px} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/7.min.css: -------------------------------------------------------------------------------- 1 | a{padding:0} -------------------------------------------------------------------------------- /test/fixture/usage/scopes-1.min.css: -------------------------------------------------------------------------------- 1 | .a,.c{p:1}.b,.d{p:2} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-3.css: -------------------------------------------------------------------------------- 1 | p { font-size: 12px } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-3.min.css: -------------------------------------------------------------------------------- 1 | p{font-size:12px} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-5.css: -------------------------------------------------------------------------------- 1 | h2 { line-height: 3cm } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-5.min.css: -------------------------------------------------------------------------------- 1 | h2{line-height:3cm} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-6.css: -------------------------------------------------------------------------------- 1 | h3 { word-spacing: 4mm } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-6.min.css: -------------------------------------------------------------------------------- 1 | h3{word-spacing:4mm} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-7.css: -------------------------------------------------------------------------------- 1 | h4 { font-size: 12pt } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-7.min.css: -------------------------------------------------------------------------------- 1 | h4{font-size:12pt} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-8.css: -------------------------------------------------------------------------------- 1 | h4 { font-size: 1pc } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-8.min.css: -------------------------------------------------------------------------------- 1 | h4{font-size:1pc} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-2.css: -------------------------------------------------------------------------------- 1 | em { color: #ff0000 } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-4.min.css: -------------------------------------------------------------------------------- 1 | em{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-5.min.css: -------------------------------------------------------------------------------- 1 | em{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-6.min.css: -------------------------------------------------------------------------------- 1 | a[b="ab cdefg"]{b:c} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.4-1.min.css: -------------------------------------------------------------------------------- 1 | @charset "ISO-8859-1"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.4-2.min.css: -------------------------------------------------------------------------------- 1 | @charset "test";E{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-1.min.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-2.css: -------------------------------------------------------------------------------- 1 | @import url("mystyle.css"); -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.4.2-1.css: -------------------------------------------------------------------------------- 1 | a { p: v !important } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.4.2-2.min.css: -------------------------------------------------------------------------------- 1 | a{p:v0!important} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part7-1.css: -------------------------------------------------------------------------------- 1 | @media screen { E { p: v } } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part7-1.min.css: -------------------------------------------------------------------------------- 1 | @media screen{E{p:v}} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-1-comments.min.css: -------------------------------------------------------------------------------- 1 | *{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-10.css: -------------------------------------------------------------------------------- 1 | E:root { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-10.min.css: -------------------------------------------------------------------------------- 1 | E:root{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-2-comments.min.css: -------------------------------------------------------------------------------- 1 | E{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-21.css: -------------------------------------------------------------------------------- 1 | E:empty { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-21.min.css: -------------------------------------------------------------------------------- 1 | E:empty{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-22.css: -------------------------------------------------------------------------------- 1 | E:link { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-22.min.css: -------------------------------------------------------------------------------- 1 | E:link{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-23.css: -------------------------------------------------------------------------------- 1 | E:visited { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-23.min.css: -------------------------------------------------------------------------------- 1 | E:visited{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-24.css: -------------------------------------------------------------------------------- 1 | E:active { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-24.min.css: -------------------------------------------------------------------------------- 1 | E:active{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-25.css: -------------------------------------------------------------------------------- 1 | E:hover { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-25.min.css: -------------------------------------------------------------------------------- 1 | E:hover{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-26.css: -------------------------------------------------------------------------------- 1 | E:focus { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-26.min.css: -------------------------------------------------------------------------------- 1 | E:focus{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-27.css: -------------------------------------------------------------------------------- 1 | E:target { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-27.min.css: -------------------------------------------------------------------------------- 1 | E:target{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-28.min.css: -------------------------------------------------------------------------------- 1 | E:lang(fr){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-29.css: -------------------------------------------------------------------------------- 1 | E:enabled { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-29.min.css: -------------------------------------------------------------------------------- 1 | E:enabled{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-3.css: -------------------------------------------------------------------------------- 1 | E[ foo ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-30.min.css: -------------------------------------------------------------------------------- 1 | E:disabled{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-31.css: -------------------------------------------------------------------------------- 1 | E:checked { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-31.min.css: -------------------------------------------------------------------------------- 1 | E:checked{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-34.css: -------------------------------------------------------------------------------- 1 | E::before { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-34.min.css: -------------------------------------------------------------------------------- 1 | E::before{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-35.css: -------------------------------------------------------------------------------- 1 | E::after { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-35.min.css: -------------------------------------------------------------------------------- 1 | E::after{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-36.css: -------------------------------------------------------------------------------- 1 | E.warning { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-36.min.css: -------------------------------------------------------------------------------- 1 | E.warning{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-37.css: -------------------------------------------------------------------------------- 1 | E#myid { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-37.min.css: -------------------------------------------------------------------------------- 1 | E#myid{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-38.min.css: -------------------------------------------------------------------------------- 1 | E:not(s){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-40.css: -------------------------------------------------------------------------------- 1 | E > F { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-41.css: -------------------------------------------------------------------------------- 1 | E + F { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-42.css: -------------------------------------------------------------------------------- 1 | E ~ F { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-10.min.css: -------------------------------------------------------------------------------- 1 | a,x:visited{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-12.min.css: -------------------------------------------------------------------------------- 1 | a,x:active{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-14.min.css: -------------------------------------------------------------------------------- 1 | a,x:first-line{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-17.min.css: -------------------------------------------------------------------------------- 1 | x:before,y:after{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-21.min.css: -------------------------------------------------------------------------------- 1 | :test0,:test1{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-24.min.css: -------------------------------------------------------------------------------- 1 | a,b,x:test{property:value1} -------------------------------------------------------------------------------- /test/fixture/compress/issue/48.min.css: -------------------------------------------------------------------------------- 1 | a{p0:0;p1:0;p2:0 0 0;p3:0 0} -------------------------------------------------------------------------------- /test/fixture/compress/issue/53-1.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:0 -1px 0 -2px} -------------------------------------------------------------------------------- /test/fixture/compress/issue/53-2.css: -------------------------------------------------------------------------------- 1 | .a{margin:-1px -2px -3px -4px} -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-1.min.css: -------------------------------------------------------------------------------- 1 | .foo{margin:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-2.min.css: -------------------------------------------------------------------------------- 1 | .foo{margin:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-4.min.css: -------------------------------------------------------------------------------- 1 | .foo{margin:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/issue/_135.css: -------------------------------------------------------------------------------- 1 | { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.empty.atrule/1.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.empty.atrule/2.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal.selectors/1.min.css: -------------------------------------------------------------------------------- 1 | a{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal.selectors/2.min.css: -------------------------------------------------------------------------------- 1 | a,b{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/6.min.css: -------------------------------------------------------------------------------- 1 | a{p:v0}b{p:v1} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/7.min.css: -------------------------------------------------------------------------------- 1 | a,b{p1:v;p0:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/1.min.css: -------------------------------------------------------------------------------- 1 | a{p1:v}a,b{p0:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/2.min.css: -------------------------------------------------------------------------------- 1 | a,b{p0:v}b{p1:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/3.min.css: -------------------------------------------------------------------------------- 1 | a,b{p0:v}b,c{p1:v} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/3.min.css: -------------------------------------------------------------------------------- 1 | a{margin:-1px} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/7.min.css: -------------------------------------------------------------------------------- 1 | a{margin:0} -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-2.min.css: -------------------------------------------------------------------------------- 1 | @import 'foo.css'; 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/hex-normalize.min.css: -------------------------------------------------------------------------------- 1 | a{color:#abcdef} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/keyword-normalize.min.css: -------------------------------------------------------------------------------- 1 | a{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-3.css: -------------------------------------------------------------------------------- 1 | em { color: rgb(255,0,0) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-5.css: -------------------------------------------------------------------------------- 1 | em { color: rgb(255,-10,0) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-1.css: -------------------------------------------------------------------------------- 1 | a { b : "this is a 'string'" } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-1.min.css: -------------------------------------------------------------------------------- 1 | a{b:"this is a 'string'"} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-3.css: -------------------------------------------------------------------------------- 1 | a { b : 'this is a "string"' } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-3.min.css: -------------------------------------------------------------------------------- 1 | a{b:'this is a "string"'} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.4-2.css: -------------------------------------------------------------------------------- 1 | @charset "test"; 2 | E { p: v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-10-comments.min.css: -------------------------------------------------------------------------------- 1 | E:root{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-15.css: -------------------------------------------------------------------------------- 1 | E:first-child { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-15.min.css: -------------------------------------------------------------------------------- 1 | E:first-child{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-16.css: -------------------------------------------------------------------------------- 1 | E:last-child { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-16.min.css: -------------------------------------------------------------------------------- 1 | E:last-child{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-17.min.css: -------------------------------------------------------------------------------- 1 | E:first-of-type{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-18.css: -------------------------------------------------------------------------------- 1 | E:last-of-type { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-18.min.css: -------------------------------------------------------------------------------- 1 | E:last-of-type{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-19.css: -------------------------------------------------------------------------------- 1 | E:only-child { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-19.min.css: -------------------------------------------------------------------------------- 1 | E:only-child{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-20.css: -------------------------------------------------------------------------------- 1 | E:only-of-type { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-20.min.css: -------------------------------------------------------------------------------- 1 | E:only-of-type{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-22-comments.min.css: -------------------------------------------------------------------------------- 1 | E:link{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-28.css: -------------------------------------------------------------------------------- 1 | E:lang( fr ) { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-3-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-30.css: -------------------------------------------------------------------------------- 1 | E:disabled { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-32.css: -------------------------------------------------------------------------------- 1 | E::first-line { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-32.min.css: -------------------------------------------------------------------------------- 1 | E::first-line{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-33.min.css: -------------------------------------------------------------------------------- 1 | E::first-letter{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-37-comments.min.css: -------------------------------------------------------------------------------- 1 | E#myid{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-38.css: -------------------------------------------------------------------------------- 1 | E:not( s ) { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-39-comments.min.css: -------------------------------------------------------------------------------- 1 | E F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-4.min.css: -------------------------------------------------------------------------------- 1 | E[foo="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-40-comments.min.css: -------------------------------------------------------------------------------- 1 | E>F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-41-comments.min.css: -------------------------------------------------------------------------------- 1 | E+F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-42-comments.min.css: -------------------------------------------------------------------------------- 1 | E~F{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-5.min.css: -------------------------------------------------------------------------------- 1 | E[foo~="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-6.min.css: -------------------------------------------------------------------------------- 1 | E[foo^="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-7.min.css: -------------------------------------------------------------------------------- 1 | E[foo$="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-8.min.css: -------------------------------------------------------------------------------- 1 | E[foo*="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-9.min.css: -------------------------------------------------------------------------------- 1 | E[foo|="e n"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-1.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}a:test{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-13.min.css: -------------------------------------------------------------------------------- 1 | a,x:first-letter{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-15.min.css: -------------------------------------------------------------------------------- 1 | a,x::first-letter{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-16.min.css: -------------------------------------------------------------------------------- 1 | a,x::first-line{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-20.min.css: -------------------------------------------------------------------------------- 1 | a,b:test,c:after{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-5.min.css: -------------------------------------------------------------------------------- 1 | a,b:test{color:red;border:0} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/45.css: -------------------------------------------------------------------------------- 1 | .a{margin:0} 2 | .a{margin-top:-1em} -------------------------------------------------------------------------------- /test/fixture/compress/issue/53-2.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:-1px -2px -3px -4px} -------------------------------------------------------------------------------- /test/fixture/compress/issue/79-2.min.css: -------------------------------------------------------------------------------- 1 | @test{color:red}.test{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/88.min.css: -------------------------------------------------------------------------------- 1 | .t-1{color:red}.t-01{color:#00f} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/1.min.css: -------------------------------------------------------------------------------- 1 | a{color:red;margin:2} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.padding/1.min.css: -------------------------------------------------------------------------------- 1 | a{color:red;padding:2} -------------------------------------------------------------------------------- /docs/avito.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peterbe/csso/master/docs/avito.png -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-3.min.css: -------------------------------------------------------------------------------- 1 | @media screen{a{color:red}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-9.min.css: -------------------------------------------------------------------------------- 1 | @import url(0.0);E{p:url(0.0)} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-4.css: -------------------------------------------------------------------------------- 1 | em { color: rgb(100%, 0%, 0%) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-2.css: -------------------------------------------------------------------------------- 1 | a { b : "this is a \"string\"" } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-2.min.css: -------------------------------------------------------------------------------- 1 | a{b:"this is a \"string\""} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-4.css: -------------------------------------------------------------------------------- 1 | a { b : 'this is a \'string\'' } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-4.min.css: -------------------------------------------------------------------------------- 1 | a{b:'this is a \'string\''} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-2.min.css: -------------------------------------------------------------------------------- 1 | @import url(mystyle.css); 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-3.css: -------------------------------------------------------------------------------- 1 | @import url("fineprint.css") print; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part7-2.min.css: -------------------------------------------------------------------------------- 1 | @media screen,print{E{p:v}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-12.min.css: -------------------------------------------------------------------------------- 1 | E:nth-last-child(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-13.css: -------------------------------------------------------------------------------- 1 | E:nth-of-type( n ) { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-13.min.css: -------------------------------------------------------------------------------- 1 | E:nth-of-type(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-17.css: -------------------------------------------------------------------------------- 1 | E:first-of-type { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-21-comments.min.css: -------------------------------------------------------------------------------- 1 | E:empty{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-23-comments.min.css: -------------------------------------------------------------------------------- 1 | E:visited{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-24-comments.min.css: -------------------------------------------------------------------------------- 1 | E:active{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-25-comments.min.css: -------------------------------------------------------------------------------- 1 | E:hover{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-26-comments.min.css: -------------------------------------------------------------------------------- 1 | E:focus{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-27-comments.min.css: -------------------------------------------------------------------------------- 1 | E:target{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-28-comments.min.css: -------------------------------------------------------------------------------- 1 | E:lang(fr){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-29-comments.min.css: -------------------------------------------------------------------------------- 1 | E:enabled{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-30-comments.min.css: -------------------------------------------------------------------------------- 1 | E:disabled{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-31-comments.min.css: -------------------------------------------------------------------------------- 1 | E:checked{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-33.css: -------------------------------------------------------------------------------- 1 | E::first-letter { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-34-comments.min.css: -------------------------------------------------------------------------------- 1 | E::before{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-35-comments.min.css: -------------------------------------------------------------------------------- 1 | E::after{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-36-comments.min.css: -------------------------------------------------------------------------------- 1 | E.warning{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-38-comments.min.css: -------------------------------------------------------------------------------- 1 | E:not(s){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-4.css: -------------------------------------------------------------------------------- 1 | E[ foo = "b ar" ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-5.css: -------------------------------------------------------------------------------- 1 | E[ foo ~= "b ar" ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-6.css: -------------------------------------------------------------------------------- 1 | E[ foo ^= "b ar" ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-7.css: -------------------------------------------------------------------------------- 1 | E[ foo $= "b ar" ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-8.css: -------------------------------------------------------------------------------- 1 | E[ foo *= "b ar" ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-9.css: -------------------------------------------------------------------------------- 1 | E[ foo |= "e n" ] { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-18.min.css: -------------------------------------------------------------------------------- 1 | a,b,x:before,y:after{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-19.min.css: -------------------------------------------------------------------------------- 1 | a:test,x:before,y:after{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-21.css: -------------------------------------------------------------------------------- 1 | :test0, :test1 { 2 | color: red 3 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-22.min.css: -------------------------------------------------------------------------------- 1 | a,x:after,y:before{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-30.min.css: -------------------------------------------------------------------------------- 1 | a{margin:1px}:b,a{margin:2px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-8.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}a,x::test{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/50-1.css: -------------------------------------------------------------------------------- 1 | a { 2 | src: x; 3 | src: y 4 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-3.min.css: -------------------------------------------------------------------------------- 1 | a,c{margin-top:10px}b{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-4.min.css: -------------------------------------------------------------------------------- 1 | a{margin:2px 1px}b,c{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/units/1.min.css: -------------------------------------------------------------------------------- 1 | a{-ms-flex:5 1 0px;flex:5 1 0px} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/ids-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "ids": ["foo", "bar"] 3 | } 4 | -------------------------------------------------------------------------------- /docs/yandex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peterbe/csso/master/docs/yandex.png -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-4.css: -------------------------------------------------------------------------------- 1 | @unknown; 2 | @import 'foo.css'; 3 | -------------------------------------------------------------------------------- /test/fixture/compress/attrib.string/3.min.css: -------------------------------------------------------------------------------- 1 | [name=test i],[name=test]{p:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/bad-declaration.css: -------------------------------------------------------------------------------- 1 | a { color: } 2 | b { foo: ; bar: 1 } 3 | -------------------------------------------------------------------------------- /test/fixture/compress/color/hex-normalize.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: #ABCDEF; 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/color/keyword-normalize.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: RED; 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/colormark.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red;color:rgba(255,0,0,.5)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-9.css: -------------------------------------------------------------------------------- 1 | @import url(0.0); 2 | E { p: url(0.0) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-5.css: -------------------------------------------------------------------------------- 1 | a { 2 | b : "abcd\ 3 | efg" 4 | } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.4-3.css: -------------------------------------------------------------------------------- 1 | @charset "test0"; 2 | @charset "test1"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-3.min.css: -------------------------------------------------------------------------------- 1 | @import url(fineprint.css) print; 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-4.css: -------------------------------------------------------------------------------- 1 | @import url("bluish.css") projection, tv; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-6.min.css: -------------------------------------------------------------------------------- 1 | @import "mystyle1.css";a{p0:v}b{p1:v} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.4.2-3.min.css: -------------------------------------------------------------------------------- 1 | a{p0:v0!important;p1:v2!important} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part7-2.css: -------------------------------------------------------------------------------- 1 | @media screen, print { E { p: v } } 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-11-comments.min.css: -------------------------------------------------------------------------------- 1 | E:nth-child(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-12.css: -------------------------------------------------------------------------------- 1 | E:nth-last-child( n ) { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-13-comments.min.css: -------------------------------------------------------------------------------- 1 | E:nth-of-type(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-14.css: -------------------------------------------------------------------------------- 1 | E:nth-last-of-type( n ) { p : v } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-14.min.css: -------------------------------------------------------------------------------- 1 | E:nth-last-of-type(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-15-comments.min.css: -------------------------------------------------------------------------------- 1 | E:first-child{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-16-comments.min.css: -------------------------------------------------------------------------------- 1 | E:last-child{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-17-comments.min.css: -------------------------------------------------------------------------------- 1 | E:first-of-type{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-18-comments.min.css: -------------------------------------------------------------------------------- 1 | E:last-of-type{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-19-comments.min.css: -------------------------------------------------------------------------------- 1 | E:only-child{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-20-comments.min.css: -------------------------------------------------------------------------------- 1 | E:only-of-type{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-32-comments.min.css: -------------------------------------------------------------------------------- 1 | E::first-line{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-33-comments.min.css: -------------------------------------------------------------------------------- 1 | E::first-letter{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-4-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-5-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo~="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-6-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo^="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-7-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo$="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-8-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo*="b ar"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-9-comments.min.css: -------------------------------------------------------------------------------- 1 | E[foo|="e n"]{p:v} -------------------------------------------------------------------------------- /test/fixture/compress/dont.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{color:#000;font-weight:600}.b{color:#fff} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-25.min.css: -------------------------------------------------------------------------------- 1 | a,c,x:after+b,x:before+d{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-29.min.css: -------------------------------------------------------------------------------- 1 | :b,a{color:green}:b,:c,a{color:#00f} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/54.min.css: -------------------------------------------------------------------------------- 1 | .a,.b,.c,.d,.e{background:0 0!important} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/57-1.min.css: -------------------------------------------------------------------------------- 1 | a{clip:rect(0 0 0 0);clip:rect(0,0,0,0)} -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-2.min.css: -------------------------------------------------------------------------------- 1 | .test2{margin-top:100px}.test1{margin:0} -------------------------------------------------------------------------------- /test/fixture/compress/issue/92.min.css: -------------------------------------------------------------------------------- 1 | /*! test */ 2 | /*! test2 */ 3 | s{p:v} 4 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/_39-27.min.css: -------------------------------------------------------------------------------- 1 | b,x:test{color:red}a,x:test{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal.selectors/1.css: -------------------------------------------------------------------------------- 1 | a, a { 2 | p: v 3 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/8.min.css: -------------------------------------------------------------------------------- 1 | a,c{color:red}b{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/6.min.css: -------------------------------------------------------------------------------- 1 | a{margin:0 1px 2px 3px!important} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/6.min.css: -------------------------------------------------------------------------------- 1 | a{padding:0 1px 2px 3px!important} -------------------------------------------------------------------------------- /test/fixture/compress/trbl/2.min.css: -------------------------------------------------------------------------------- 1 | #footer{margin:32px auto 11px}p{padding:0} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/atrule-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "classes": ["foo", "bar"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/usage/tags-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "tags": ["div", "span"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-1.min.css: -------------------------------------------------------------------------------- 1 | @import url(test.gif);E{p:url(test.gif)} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-5.min.css: -------------------------------------------------------------------------------- 1 | @import url(test.gif);E{p:url(test.gif)} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.7-6.css: -------------------------------------------------------------------------------- 1 | a[b="ab cd\ 2 | efg"] { 3 | b : c 4 | } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-4.min.css: -------------------------------------------------------------------------------- 1 | @import url(bluish.css) projection,tv; 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-12-comments.min.css: -------------------------------------------------------------------------------- 1 | E:nth-last-child(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-14-comments.min.css: -------------------------------------------------------------------------------- 1 | E:nth-last-of-type(n){p:v} -------------------------------------------------------------------------------- /test/fixture/compress/issue/16.min.css: -------------------------------------------------------------------------------- 1 | a{background:url(img/image.png) no-repeat} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-23.min.css: -------------------------------------------------------------------------------- 1 | x::first-letter,y:after,y:before{color:red} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-26.min.css: -------------------------------------------------------------------------------- 1 | x:test+b{color:red}a,x:test+c{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-3.min.css: -------------------------------------------------------------------------------- 1 | .my{color:red}.my,x:-vendor-pseudo{color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-4.min.css: -------------------------------------------------------------------------------- 1 | a:test{color:red;property0:test;property1:test} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-6.min.css: -------------------------------------------------------------------------------- 1 | :test{color:#00f;border:0}a{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-7.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}a,x:nth-child(2n+1){color:green} -------------------------------------------------------------------------------- /test/fixture/compress/issue/52-1.css: -------------------------------------------------------------------------------- 1 | .a{padding:0 0 1em}.a,.b{padding-bottom:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal.selectors/3.min.css: -------------------------------------------------------------------------------- 1 | a b,c{p0:v;p1:v;p2:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/2.min.css: -------------------------------------------------------------------------------- 1 | a{color:red;margin:3 3 3 4}b{p:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/5.min.css: -------------------------------------------------------------------------------- 1 | a{margin:1px 2% auto 0}b{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/unicode-in-ident.min.css: -------------------------------------------------------------------------------- 1 | .\31 0\+,.\31 5\+,.\32 0\+{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/classes-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "classes": ["foo", "bar"] 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-1.min.css: -------------------------------------------------------------------------------- 1 | @media (max-width:100px){.a{color:green}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-2.min.css: -------------------------------------------------------------------------------- 1 | @media (min-width:100px){.a,.b{color:red}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgb-clipping.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}b{color:#f10}c{color:#fff} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgb-percent.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}b{color:#ff8000}c{color:#fff} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-1.css: -------------------------------------------------------------------------------- 1 | @import url(test.gif); 2 | E { p: url(test.gif) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-2.min.css: -------------------------------------------------------------------------------- 1 | @import url(a/test.gif);E{p:url(a/test.gif)} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-6.min.css: -------------------------------------------------------------------------------- 1 | @import url(test.gif);E{p:url(test.gif)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-5.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; 2 | @import "mystyle.css"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-5.min.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css";@import "mystyle.css"; -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.4.2-2.css: -------------------------------------------------------------------------------- 1 | a { 2 | p: v0 !important; 3 | p: v 4 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-28.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}:b,a{color:red}:b,:c,a{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/52-1.min.css: -------------------------------------------------------------------------------- 1 | .a{padding:0 0 1em}.a,.b{padding-bottom:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/issue/52-2.min.css: -------------------------------------------------------------------------------- 1 | .a{padding:0!important}.b{padding-bottom:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/issue/71.min.css: -------------------------------------------------------------------------------- 1 | a{display:-webkit-box;display:-moz-box;display:box} -------------------------------------------------------------------------------- /test/fixture/compress/issue/92.css: -------------------------------------------------------------------------------- 1 | /*! test */ 2 | 3 | 4 | /*! test2 */ 5 | 6 | s { p: v } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.background/3.min.css: -------------------------------------------------------------------------------- 1 | a{background-size:100%;background:gray} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.border/1.min.css: -------------------------------------------------------------------------------- 1 | .foo{border-color:red #00f red red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/13.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{color:red}@font-family{test:1} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.padding/2.min.css: -------------------------------------------------------------------------------- 1 | a{color:red;padding:3 3 3 4}b{p:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/6.min.css: -------------------------------------------------------------------------------- 1 | a{margin:0 -1px -2px -3px!important} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/11.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:5rem}.b{margin:6rem 7rem} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/5.min.css: -------------------------------------------------------------------------------- 1 | a{padding:1px 2% auto 0}b{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-2.css: -------------------------------------------------------------------------------- 1 | @import url(a/test.gif); 2 | E { p: url(a/test.gif) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-5.css: -------------------------------------------------------------------------------- 1 | @import url( test.gif ); 2 | E { p: url( test.gif ) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-6.css: -------------------------------------------------------------------------------- 1 | @import url("test.gif"); 2 | E { p: url("test.gif") } -------------------------------------------------------------------------------- /test/fixture/compress/issue/16.css: -------------------------------------------------------------------------------- 1 | a { 2 | background: url('img/image.png') no-repeat 3 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/57-2.min.css: -------------------------------------------------------------------------------- 1 | a{clip:rect(0 0 0 0);clip:rect(0,0,0,0)}b{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.empty.atrule/1.css: -------------------------------------------------------------------------------- 1 | .a { p: v } 2 | @test x y {} 3 | .b { p: v } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | p: v; 3 | } 4 | b { 5 | p: v; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/10.min.css: -------------------------------------------------------------------------------- 1 | .a:hover,.c:hover{color:red}.b{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/9.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red}.b{color:green}.c{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/2-1.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red}.b{p:v}.a{margin:3 3 3 4} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/5.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{color:red;width:100px}.b{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-1.min.css: -------------------------------------------------------------------------------- 1 | .bar,.foo{foo:a;bar:c}.bar{foo:b} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.padding/3.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red}.b{p:v}.a{padding:3 3 3 4} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/5.min.css: -------------------------------------------------------------------------------- 1 | a{margin:-1px -2% auto 0}b{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/black-white-1.min.css: -------------------------------------------------------------------------------- 1 | #bar,.bar,bar{p:4}*{p:5}:not(.bar),:not(.foo){p:6} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/scopes-1.css: -------------------------------------------------------------------------------- 1 | .a { p: 1 } 2 | .b { p: 2 } 3 | .c { p: 1 } 4 | .d { p: 2 } 5 | -------------------------------------------------------------------------------- /test/fixture/compress/attrib.string/3.css: -------------------------------------------------------------------------------- 1 | [name=test], 2 | [name=test i] 3 | { 4 | p: v; 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/compress/color/hls.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red}.b{color:#0f0}.c{color:#123354}.d{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/1.min.css: -------------------------------------------------------------------------------- 1 | /*! protected comment */ 2 | /*! protected comment 2 */ 3 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/4.min.css: -------------------------------------------------------------------------------- 1 | h1{font-size:2em} 2 | /*! foo */ 3 | h1{font-size:36px} 4 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part15.6.min.css: -------------------------------------------------------------------------------- 1 | a{font-weight:700}b{font-weight:400}c{font-weight:bolder} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-3.min.css: -------------------------------------------------------------------------------- 1 | @import url(../a/b/test.gif);E{p:url(../a/b/test.gif)} -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-7.min.css: -------------------------------------------------------------------------------- 1 | @import url(\"test\".gif);E{p:url(\"test\".gif)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/custom-property-issue318.min.css: -------------------------------------------------------------------------------- 1 | .test{--bar: ;a:var(--foo, );b:var(--foo,)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/dont.background/1.min.css: -------------------------------------------------------------------------------- 1 | .a{background-color:green;color:red;background:gray} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-1.css: -------------------------------------------------------------------------------- 1 | a { 2 | color:red 3 | } 4 | a:test { 5 | color:red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/57-1.css: -------------------------------------------------------------------------------- 1 | a { 2 | clip: rect(0 0 0 0); 3 | clip: rect(0,0,0,0); 4 | } -------------------------------------------------------------------------------- /test/fixture/compress/mess/2.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{padding:1px;color:red}.b{padding:2px}.b,.c{margin:2px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/not.min.css: -------------------------------------------------------------------------------- 1 | a{color:red}a:not(b){color:red}.a:not(.b),.c:not(.d){color:#123} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/selector/1.min.css: -------------------------------------------------------------------------------- 1 | div.dropdown *{color:red}* div{color:#00f}a b{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/2.min.css: -------------------------------------------------------------------------------- 1 | a{margin-top:1px;margin-right:1px;margin-bottom:1px} -------------------------------------------------------------------------------- /test/fixture/compress/trbl/3.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:32px auto 20px}.b{padding:0}.a{margin-bottom:11px} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/atrule-1.min.css: -------------------------------------------------------------------------------- 1 | @media a{.foo{p:1}.bar{p:2}}@supports (a:1){.foo{p:1}.bar{p:2}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-1.min.css: -------------------------------------------------------------------------------- 1 | @charset 'utf-8';@import 'foo.css';@import 'bar.css'; 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-2.min.css: -------------------------------------------------------------------------------- 1 | @keyframes test{0%,60%{color:red}50%,to{color:green}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-4.min.css: -------------------------------------------------------------------------------- 1 | @media (min-width:100px) or (monochrome){.a{color:red}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/supports-2.min.css: -------------------------------------------------------------------------------- 1 | @supports (width:0px) and (test:0deg){.test{foo:1}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-3.css: -------------------------------------------------------------------------------- 1 | @import url(../a/b/test.gif); 2 | E { p: url(../a/b/test.gif) } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-7.css: -------------------------------------------------------------------------------- 1 | @import url(\"test\".gif); 2 | E { p: url(\"test\".gif) } 3 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/170.min.css: -------------------------------------------------------------------------------- 1 | .foo{background:url(old.jpg);background:0 0,url(hotness.svg)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-2.css: -------------------------------------------------------------------------------- 1 | a:test { 2 | color:red 3 | } 4 | a:test { 5 | color:red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-8.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x::test { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-9.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:link { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/81-2.min.css: -------------------------------------------------------------------------------- 1 | div{height:-webkit-calc(100% - 30px);height:-moz-calc(100% - 30px)} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/4.min.css: -------------------------------------------------------------------------------- 1 | a{p0:v}bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{p0:v;p1:v}c{p1:v} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/9.min.css: -------------------------------------------------------------------------------- 1 | a.foo:foo,c.baz:foo{color:red}b.bar:foo{color:green} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-3.min.css: -------------------------------------------------------------------------------- 1 | .bar,.foo{foo:a;bar:c}.bar{foo:b!important} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/2.min.css: -------------------------------------------------------------------------------- 1 | a{padding-top:1px;padding-right:1px;padding-bottom:1px} -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-1.css: -------------------------------------------------------------------------------- 1 | @charset 'utf-8'; 2 | @import 'foo.css'; 3 | @import 'bar.css'; 4 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-2.css: -------------------------------------------------------------------------------- 1 | @import 'foo.css'; 2 | @media all { } 3 | @import 'bar.css'; 4 | 5 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-7.min.css: -------------------------------------------------------------------------------- 1 | .foo{color:#00f}@media (min-width:100px){.foo{color:green}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-11.min.css: -------------------------------------------------------------------------------- 1 | E:nth-child(2n+1),E:nth-child(even),E:nth-child(n){p:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/138-1.min.css: -------------------------------------------------------------------------------- 1 | xxxxxxxxxxxxxxxxxxxx::-ms-clear{tesplay:none}.aaaa{tesplay:none;font:x} -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-10.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:visited { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-11.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:hover { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-12.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:active { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-17.css: -------------------------------------------------------------------------------- 1 | x:before { 2 | color: red 3 | } 4 | y:after { 5 | color: red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/79-2.css: -------------------------------------------------------------------------------- 1 | @test { 2 | color: red 3 | } 4 | 5 | .test { 6 | color: red 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/88.css: -------------------------------------------------------------------------------- 1 | .t-1 { 2 | color: red; 3 | } 4 | 5 | .t-01 { 6 | color: blue; 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal.selectors/2.css: -------------------------------------------------------------------------------- 1 | a, b { 2 | p: v; 3 | } 4 | b, a { 5 | p: v; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v; 3 | p1: v; 4 | } 5 | b { 6 | p0: v; 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/14.min.css: -------------------------------------------------------------------------------- 1 | @keyframes foo{0%{frame:1}to{frame:2}}.a,.b{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v; 3 | } 4 | b { 5 | p0: v; 6 | p1: v; 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/6.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{width:100px}.a{color:red}.b{color:rgba(1,2,3,.5)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/2.min.css: -------------------------------------------------------------------------------- 1 | a{margin-top:-1px;margin-right:-1px;margin-bottom:-1px} -------------------------------------------------------------------------------- /test/fixture/usage/scopes-3.min.css: -------------------------------------------------------------------------------- 1 | .a .b{opacity:1}.foo{opacity:0;color:red}.bar{opacity:1;display:block} 2 | -------------------------------------------------------------------------------- /lib/clean/Comment.js: -------------------------------------------------------------------------------- 1 | module.exports = function cleanComment(data, item, list) { 2 | list.remove(item); 3 | }; 4 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/5.css: -------------------------------------------------------------------------------- 1 | /*! protected comment */ 2 | /*! protected comment 2 */ 3 | @import 'test'; 4 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-13.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:first-letter { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-14.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:first-line { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-15.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x::first-letter { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-16.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x::first-line { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-18.css: -------------------------------------------------------------------------------- 1 | a,x:before { 2 | color: red 3 | } 4 | b,y:after { 5 | color: red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-5.css: -------------------------------------------------------------------------------- 1 | a, b:test { 2 | color: red 3 | } 4 | b:test, a { 5 | border: none 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-7.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, x:nth-child(2n+1) { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/position-sticky.min.css: -------------------------------------------------------------------------------- 1 | .position{position:relative;position:-webkit-sticky;position:sticky} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.background/3.css: -------------------------------------------------------------------------------- 1 | a { 2 | background-size: 100%; 3 | background: gray 4 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/7.css: -------------------------------------------------------------------------------- 1 | a,b { 2 | p0: v; 3 | p1: v; 4 | } 5 | b { 6 | p0:v; 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1; 3 | color: red; 4 | margin: 2 5 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-4.min.css: -------------------------------------------------------------------------------- 1 | .bar,.foo{foo:a!important;bar:c}.bar{foo:b!important} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/units/3.min.css: -------------------------------------------------------------------------------- 1 | .transfer,.transfers.is-toggle-visible{display:block}.transfer{width:auto} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-4.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 100px) or (monochrome) { 2 | .a { color: red } 3 | } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/color/hlsa.min.css: -------------------------------------------------------------------------------- 1 | a{color:rgba(255,0,0,.5)}b{color:#0f0}c{color:rgba(255,0,4,.1)}d{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgba.min.css: -------------------------------------------------------------------------------- 1 | a{color:rgba(255,64,0,.5)}b{color:rgba(255,0,0,.5)}c{color:rgba(255,0,0,.2)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/5.min.css: -------------------------------------------------------------------------------- 1 | /*! protected comment */ 2 | /*! protected comment 2 */ 3 | @import 'test'; 4 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-4.min.css: -------------------------------------------------------------------------------- 1 | @import url(http://www.a.com/test.gif);E{p:url(http://www.a.com/test.gif)} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-1-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/*/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-2-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/cursor-issue306.min.css: -------------------------------------------------------------------------------- 1 | .drag-and-drop__handle{cursor:url(cursors/grag.cur),move;cursor:grab} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-20.css: -------------------------------------------------------------------------------- 1 | a, b:test { 2 | color: red 3 | } 4 | a, b:test, c:after { 5 | color: red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/71.css: -------------------------------------------------------------------------------- 1 | a { 2 | display: -webkit-box; 3 | display: -moz-box; 4 | display: box; 5 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-5.min.css: -------------------------------------------------------------------------------- 1 | a,c,d{margin-bottom:1px}b{margin-left:1px;margin-right:1px;margin-top:1px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-3.min.css: -------------------------------------------------------------------------------- 1 | .foo{margin-top:0!important;margin-right:0!important;margin-bottom:0!important} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/3.min.css: -------------------------------------------------------------------------------- 1 | .a{_margin:2;margin:4}.b{*margin:6;margin:8}.c{//margin:10;margin:12} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/8.min.css: -------------------------------------------------------------------------------- 1 | .foo.bar{top:-50px}.baz.qux,.foo.bar.in{top:0}.foo.bar.out{top:-50px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.padding/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 1; 3 | color: red; 4 | padding: 2 5 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/1.min.css: -------------------------------------------------------------------------------- 1 | a{margin-top:1px}b{margin-right:2px}c{margin-bottom:3px}d{margin-left:4px} -------------------------------------------------------------------------------- /test/fixture/compress/trbl/1.min.css: -------------------------------------------------------------------------------- 1 | .bar{padding:20px 0 15px 46px}.any-selector{padding:3px 5px}.bar{padding-top:0} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-3.min.css: -------------------------------------------------------------------------------- 1 | @media (min-width:100px){.a{color:red}}@media (max-width:100px){.b{color:red}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/4.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | font-size: 2em; 3 | } 4 | /*! foo */ 5 | h1 { 6 | font-size: 36px 7 | } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-4.css: -------------------------------------------------------------------------------- 1 | @import url(http://www.a.com/test.gif); 2 | E { p: url(http://www.a.com/test.gif) } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-10-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:root/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-21-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:empty/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-22-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:link/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-23-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:visited/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-24-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:active/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-25-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:hover/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-26-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:focus/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-27-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:target/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-29-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:enabled/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-31-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:checked/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-34-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E::before/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-35-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E::after/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-36-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E.warning/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-37-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E#myid/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-19.css: -------------------------------------------------------------------------------- 1 | a:test, x:before { 2 | color: red 3 | } 4 | a:test, y:after { 5 | color: red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-25.css: -------------------------------------------------------------------------------- 1 | a, x:after + b { 2 | color: red 3 | } 4 | c, x:before + d { 5 | color: red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-26.css: -------------------------------------------------------------------------------- 1 | a, x:test + b { 2 | color: red 3 | } 4 | a, x:test + c { 5 | color: green 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-3.css: -------------------------------------------------------------------------------- 1 | .my { 2 | color: red 3 | } 4 | 5 | .my, x:-vendor-pseudo { 6 | color: green 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/48.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: -0; 3 | p1: -0.000; 4 | p2: -0 0 -0; 5 | p3: -0px -0.00px; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.border/2.min.css: -------------------------------------------------------------------------------- 1 | .foo{border-color:red;border-right-color:something "strange" goes here} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | p: v; 3 | } 4 | b { 5 | p: v; 6 | } 7 | c { 8 | p: v; 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/6.css: -------------------------------------------------------------------------------- 1 | a { 2 | p: v0; 3 | } 4 | b { 5 | p: v1; 6 | } 7 | a { 8 | p: v0; 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/15.min.css: -------------------------------------------------------------------------------- 1 | .a .b{opacity:1}.foo{opacity:0;color:red}.bar{opacity:1;display:block} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-291.min.css: -------------------------------------------------------------------------------- 1 | .bar,.foo[x i],[b i],span[a=b i]{color:red}.bar[a=b]{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.padding.min.css: -------------------------------------------------------------------------------- 1 | a{color:red;margin:1px 2px 3px 4px;z-index:10;padding:3px 4px 1px 2px} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/10.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:1px 2px 3px 4px;margin-top:1rem}.b{margin:5rem 2rem 3rem 4rem} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/1.min.css: -------------------------------------------------------------------------------- 1 | a{padding-top:1px}b{padding-right:2px}c{padding-bottom:3px}d{padding-left:4px} -------------------------------------------------------------------------------- /test/fixture/compress/trbl/4.min.css: -------------------------------------------------------------------------------- 1 | .a{padding:1px 2px 3px 4px}.b{padding:1px 2px 3px}.c{padding:1px 2px}.d{padding:1px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/unicode-range.min.css: -------------------------------------------------------------------------------- 1 | a{unicode-range:U+0F00-0FFF}b{unicode-range:U+0F00??}c{unicode-range:u+abcdef} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/scopes-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "scopes": [ 3 | ["a", "b"], 4 | ["c", "d"] 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-15-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:first-child/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-16-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:last-child/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-18-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:last-of-type/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-19-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:only-child/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-20-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:only-of-type/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-30-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:disabled/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-32-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E::first-line/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-39-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E /*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/dont.background/1.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background-color: green; 3 | color: red; 4 | background: gray 5 | } -------------------------------------------------------------------------------- /test/fixture/compress/dont.css: -------------------------------------------------------------------------------- 1 | .a, .b { 2 | color: black; 3 | font-weight: 600 4 | } 5 | 6 | .b { 7 | color: white 8 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/1.min.css: -------------------------------------------------------------------------------- 1 | a{margin-top:-1px}b{margin-right:-2px}c{margin-bottom:-3px}d{margin-left:-4px} -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | margin-right: 1px; 4 | margin-bottom: 1px; 5 | } -------------------------------------------------------------------------------- /test/fixture/usage/scopes-3.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "scopes": [ 3 | ["a", "b"], 4 | ["foo", "bar"] 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/import-3.css: -------------------------------------------------------------------------------- 1 | @media screen { 2 | a { 3 | color: red; 4 | } 5 | } 6 | @import 'foo.css'; 7 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-5.min.css: -------------------------------------------------------------------------------- 1 | @media (ident:foo) and (number:1) and (dimension:1px) and (ratio:16/9){.test{color:red}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-8.min.css: -------------------------------------------------------------------------------- 1 | @import url(http://a.com/?x+y+\"+#blah\'test);E{p:url(http://a.com/?x+y+\"+#blah\'test)} -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-17-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:first-of-type/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-33-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E::first-letter/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-40-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E/*test*/>/*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-41-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E/*test*/+/*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-42-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E/*test*/~/*test*/F/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-24.css: -------------------------------------------------------------------------------- 1 | a, x:test { 2 | property: value0 3 | } 4 | 5 | a, b, x:test { 6 | property: value1 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-4.css: -------------------------------------------------------------------------------- 1 | a:test { 2 | color: red; 3 | property0: test; 4 | } 5 | a:test { 6 | property1: test 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/52-2.css: -------------------------------------------------------------------------------- 1 | .a { 2 | padding:0 0 1em !important 3 | } 4 | .a,.b { 5 | padding-bottom: 0 !important 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-1.min.css: -------------------------------------------------------------------------------- 1 | .test1{margin-top:0}.test2{margin-top:100px}.test1{margin-left:0;margin-bottom:0;margin-right:0} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/17.min.css: -------------------------------------------------------------------------------- 1 | .a .b,.bar{opacity:1;display:inline}.b .a{opacity:0;color:red}.bar{display:block} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 1px; 3 | padding-right: 1px; 4 | padding-bottom: 1px; 5 | } -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.4-8.css: -------------------------------------------------------------------------------- 1 | @import url(http://a.com/?x+y+\"+#blah\'test); 2 | E { p: url(http://a.com/?x+y+\"+#blah\'test) } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-3-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-38-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:not(/*test*/s/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-28.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red 3 | } 4 | a, :b { 5 | color: red 6 | } 7 | a, :b, :c { 8 | color: red 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-5-1.min.css: -------------------------------------------------------------------------------- 1 | .a{margin-bottom:1px}.b{margin-left:1px;margin-right:1px;margin-top:1px}.c,.d{margin-bottom:1px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.border/1.css: -------------------------------------------------------------------------------- 1 | /* issue #311 */ 2 | .foo { 3 | border-color: red; 4 | border-right-color: blue; 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/16.min.css: -------------------------------------------------------------------------------- 1 | .a .b{opacity:1;display:inline}.foo{opacity:0;color:red}.bar{opacity:1;display:block} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/18.min.css: -------------------------------------------------------------------------------- 1 | .a .b,.bar{opacity:1;display:inline}.c .b .a{opacity:0;color:red}.bar{display:block} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: -1px; 3 | margin-right: -1px; 4 | margin-bottom: -1px; 5 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/4.min.css: -------------------------------------------------------------------------------- 1 | a,e{margin:1px 2px 3px 4px}b{margin:2px 1px 1px}c{margin:2px 2px 1px 1px}d{margin:1px 2px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/units/2.min.css: -------------------------------------------------------------------------------- 1 | a{width:calc(100vw/2 - 6px + 0px)}b{width:calc((5% + 0px) - (2em - 0px))}c{width:calc(10px + 0px)} 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | script: "npm run travis" 4 | node_js: 5 | - "0.10" 6 | - "0.12" 7 | - "4" 8 | - "node" 9 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-28-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:lang(/*test*/fr/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/important.min.css: -------------------------------------------------------------------------------- 1 | a{margin:0 auto!important;padding:2px 4px!important;color:green!important;text-align:center!important} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-23.css: -------------------------------------------------------------------------------- 1 | x::first-letter, y:after { 2 | color: red 3 | } 4 | x::first-letter, y:before { 5 | color: red 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-3.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 10px; 3 | } 4 | b { 5 | color: red; 6 | } 7 | c { 8 | margin-top: 10px; 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/81-2.css: -------------------------------------------------------------------------------- 1 | div { 2 | height: -webkit-calc(100% - 30px); 3 | } 4 | div { 5 | height: -moz-calc(100% - 30px); 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/81-3.min.css: -------------------------------------------------------------------------------- 1 | a,b{height:-webkit-calc(100% - 30px)}a{height:-moz-calc(100% - 30px)}b{height:-ms-calc(100% - 30px)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/position-sticky.css: -------------------------------------------------------------------------------- 1 | .position { 2 | position: relative; 3 | position: -webkit-sticky; 4 | position: sticky; 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.border/2.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | border-color: red; 3 | border-right-color: something "strange" goes here; 4 | } 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.empty.atrule/2.css: -------------------------------------------------------------------------------- 1 | .a { p: v } 2 | @test x y { 3 | .a { 4 | /*test*/ 5 | } 6 | } 7 | .b { p: v } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/_12.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:2px 0 0 3px;margin-top:2rem}.b{margin-top:10px 12px 13px 11px;margin-left:3px\9} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/4.min.css: -------------------------------------------------------------------------------- 1 | a,e{padding:1px 2px 3px 4px}b{padding:2px 1px 1px}c{padding:2px 2px 1px 1px}d{padding:1px 2px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-1.min.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes test{0%{color:red}to{color:green}}@keyframes test{0%{color:red}to{color:green}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/last-comment.min.css: -------------------------------------------------------------------------------- 1 | .foo{z-index:1}.bar{z-index:2}@media (min-width:999px){.foo{z-index:3}.bar{z-index:4}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.3-6.css: -------------------------------------------------------------------------------- 1 | @import "mystyle1.css"; 2 | a { p0: v } 3 | @import "mystyle2.css"; 4 | b { p1: v } 5 | @import "mystyle1.css"; -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-11-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:nth-child(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-11.css: -------------------------------------------------------------------------------- 1 | E:nth-child( n ) { p : v } 2 | E:nth-child( 2n + 1 ) { p : v } 3 | E:nth-child( even ) { p : v } 4 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-13-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:nth-of-type(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/initial.background.min.css: -------------------------------------------------------------------------------- 1 | .a{background:0 0}.b{background:center}.c{background:url(test.png)}.d{*background:url(test2.png)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/mess/_3.min.css: -------------------------------------------------------------------------------- 1 | // /* 2 | // .a { color: rgb(255, 255, 255) } 3 | .a{color:red} 4 | // */ 5 | .b{color:red} 6 | // something strange -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/11.min.css: -------------------------------------------------------------------------------- 1 | .a,.c,b{a:1;b:2}.c,b{c:2}.c{b:1;c:1} 2 | /*! better solution .a,.c,b{a:1;b:2}b{c:2}.c{b:1;c:1}*/ 3 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/11.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red}@media foo{.b{color:#00f}}.c{color:red}@supports (a:1){.d{color:#00f}}.e{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/3.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v; 3 | } 4 | b { 5 | p0: v; 6 | p1: v; 7 | } 8 | c { 9 | p1: v; 10 | } -------------------------------------------------------------------------------- /test/fixture/compress/comment/1.css: -------------------------------------------------------------------------------- 1 | /* some comment */ 2 | 3 | /*! protected comment */ 4 | 5 | /* some comment 2 */ 6 | 7 | /*! protected comment 2 */ 8 | -------------------------------------------------------------------------------- /test/fixture/compress/complicated/_2.min.css: -------------------------------------------------------------------------------- 1 | .class1,.class2,.prevent{float:left;margin-right:10px}.class1{width:30px}.class2{width:950px;margin-right:0} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/complicated/_3.min.css: -------------------------------------------------------------------------------- 1 | .class1,.class2,.prevent{float:left;margin-right:10px}.class1{width:30px}.class2{width:950px;margin-right:0} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part6.4.2-3.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v0 !important; 3 | p1: v1 4 | } 5 | 6 | a { 7 | p0: v1; 8 | p1: v2 !important 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-12-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:nth-last-child(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-14-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E:nth-last-of-type(/*test*/n/*test*/)/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/dont.background/2.min.css: -------------------------------------------------------------------------------- 1 | .a{background-color:green;color:red;background:#000}.b{p:v}.a{background:gray;background-url:url(test)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/138-2.min.css: -------------------------------------------------------------------------------- 1 | a::-ms-clear,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx::-ms-clear{xxxxxxxxxxxxtesplay:none}a::-ms-clear{font:x} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/167.min.css: -------------------------------------------------------------------------------- 1 | .b{position:relative;text-overflow:ellipsis;display:block;overflow:hidden;text-indent:100%;white-space:nowrap} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-22.css: -------------------------------------------------------------------------------- 1 | a, x:after { 2 | color: green 3 | } 4 | a { 5 | color: red 6 | } 7 | a, y:before { 8 | color: green 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-29.css: -------------------------------------------------------------------------------- 1 | a, :b, :c { 2 | color: red 3 | } 4 | a, :b { 5 | color: green 6 | } 7 | :c, a, :b { 8 | color: blue 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/12.min.css: -------------------------------------------------------------------------------- 1 | .a,.c,b{a:1;b:2;c:1}.c,b{c:2}.c{b:1;c:1} 2 | /*! better solution .a,.c,b{a:1;b:2;c:1}b{c:2}.c{b:1} */ 3 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/7.min.css: -------------------------------------------------------------------------------- 1 | .notification-banner.drop.in{top:0}.notification-banner.drop,.notification-banner.drop.out{top:-50px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/7.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: .0; 3 | margin-right: 0.0; 4 | margin-bottom: 0px; 5 | margin-left: 0 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/attrib.string/1.min.css: -------------------------------------------------------------------------------- 1 | [title=""],[title="-"],[title="123"],[title="test test"],[title="test test"i],[title=test i],[title=test]{p:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/attrib.string/2.min.css: -------------------------------------------------------------------------------- 1 | [title=''],[title='-'],[title='123'],[title='test test'],[title='test test'i],[title=test i],[title=test]{p:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-4-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-9-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/|=/*test*/"e n"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/cursor-issue306.css: -------------------------------------------------------------------------------- 1 | /* issue #306 */ 2 | .drag-and-drop__handle { 3 | cursor: url('cursors/grag.cur'), move; 4 | cursor: grab; 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/4.min.css: -------------------------------------------------------------------------------- 1 | a,e{margin:-1px -2px -3px -4px}b{margin:-2px -1px -1px}c{margin:-2px -2px -1px -1px}d{margin:-1px -2px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/3.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | margin-right: 1px; 4 | margin-bottom: 1px; 5 | margin-left: 1px; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/7.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: .0; 3 | padding-right: 0.0; 4 | padding-bottom: 0px; 5 | padding-left: 0 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-12.min.css: -------------------------------------------------------------------------------- 1 | @charset 'utf-8';@import 'something';@keyframes foo{0%{top:0}}@-webkit-keyframes foo{0%{top:0}}.rule{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-8.min.css: -------------------------------------------------------------------------------- 1 | @keyframes test{60%,90%,to{-webkit-a:1;a:1}60%{b:1;-webkit-c:3;c:3}90%{-webkit-c:5;c:5}to{-webkit-c:none;c:none}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/supports-1.min.css: -------------------------------------------------------------------------------- 1 | @supports ((-webkit-filter:invert(1)) or (filter:invert(1))){a:hover{-webkit-filter:invert(1);filter:invert(1)}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/calc.min.css: -------------------------------------------------------------------------------- 1 | a{width:calc(20px + 5%);height:calc((20px + 3em) - (20% - 5px));margin:calc((20px*3) + (20px/4));padding:calc(20px/5 + 3*5%)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-5-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/~=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-6-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/^=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-7-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/$=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/css3/selectors.part2-8-comments.css: -------------------------------------------------------------------------------- 1 | /*test*/E[/*test*/foo/*test*/*=/*test*/"b ar"/*test*/]/*test*/{/*test*/p/*test*/:/*test*/v/*test*/}/*test*/ -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-1.css: -------------------------------------------------------------------------------- 1 | .test1{margin-top:0} 2 | .test2{margin-top:100px} 3 | .test1{margin-left:0} 4 | .test1{margin-bottom:0} 5 | .test1{margin-right:0} -------------------------------------------------------------------------------- /test/fixture/compress/mess/1.css: -------------------------------------------------------------------------------- 1 | /* test */ 2 | 3 | .test /* test */ { 4 | /* test */ color /*test*/ : /* test */ 1em /*test*/ ; /*test*/ 5 | } 6 | 7 | /* test */ -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/text-align.min.css: -------------------------------------------------------------------------------- 1 | .test{text-align:justify;text-align:end;text-align:match-parent;text-align:justify-all;text-align:start} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal.selectors/3.css: -------------------------------------------------------------------------------- 1 | c, a b, a b { 2 | p0: v 3 | } 4 | a b, c, a b { 5 | p1: v; 6 | } 7 | a b, a b, c { 8 | p2: v; 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/3.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v; 3 | } 4 | a { 5 | p1: v; 6 | } 7 | b { 8 | p0: v; 9 | } 10 | b { 11 | p1: v; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/4.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v; 3 | } 4 | b { 5 | p0: v; 6 | } 7 | a { 8 | p1: v; 9 | } 10 | b { 11 | p1: v; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/5.css: -------------------------------------------------------------------------------- 1 | a { 2 | p: v; 3 | } 4 | b { 5 | p: v; 6 | } 7 | a { 8 | p: v; 9 | } 10 | b { 11 | p: v; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/7.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: -.0; 3 | margin-right: -0.0; 4 | margin-bottom: -0px; 5 | margin-left: -0 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/3.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 1px; 3 | padding-right: 1px; 4 | padding-bottom: 1px; 5 | padding-left: 1px; 6 | } -------------------------------------------------------------------------------- /test/fixture/usage/blacklist-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "blacklist": { 3 | "tags": ["remove"], 4 | "ids": ["remove"], 5 | "classes": ["remove"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-11.min.css: -------------------------------------------------------------------------------- 1 | @keyframes foo{to{top:1}}@-webkit-keyframes bar{to{top:1}}@keyframes Foo{to{top:1}}@-WebKit-keyframes foo{to{top:1}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-6.css: -------------------------------------------------------------------------------- 1 | :test { 2 | color: red 3 | } 4 | a { 5 | color: green 6 | } 7 | :test { 8 | color: blue; 9 | border: none 10 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/3.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: -1px; 3 | margin-right: -1px; 4 | margin-bottom: -1px; 5 | margin-left: -1px; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/4-1.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:1px 2px 3px 4px}.b{margin:2px 1px 1px}.c{margin:2px 2px 1px 1px}.d{margin:1px 2px}.e{margin:1px 2px 3px 4px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/trbl/issue297.min.css: -------------------------------------------------------------------------------- 1 | .a{padding:10px;padding:calc(1px + 2px)}.b{padding:50px}.c{padding:calc(10px + 7px)}.d{padding:calc(20px + 10px);padding:50px} -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-1.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 100px) { 2 | .a { color: red; } 3 | } 4 | @media (max-width : 100px) { 5 | .a { color: green; } 6 | } 7 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-2.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 100px) { 2 | .a { color: red } 3 | } 4 | 5 | @media (min-width: 100px) { 6 | .b { color: red } 7 | } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-3.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 100px) { 2 | .a { color: red } 3 | } 4 | 5 | @media (max-width: 100px) { 6 | .b { color: red } 7 | } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-5.css: -------------------------------------------------------------------------------- 1 | @media (ident: foo) and (number: 1) and (dimension: 1px) and (ratio: 16/9) { 2 | .test { 3 | color: red; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/2.min.css: -------------------------------------------------------------------------------- 1 | a{color:red} 2 | /*! should not merge styles with different comments */ 3 | b-1,b-2{color:red} 4 | /*! comment */ 5 | c{color:red} 6 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-31.css: -------------------------------------------------------------------------------- 1 | a, :b { 2 | margin-top: 1px; 3 | margin-right: 1px; 4 | } 5 | a, :b { 6 | margin-bottom: 1px; 7 | margin-left: 1px; 8 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-3.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | margin-top: 0 !important; 3 | margin-right: 0 !important; 4 | margin-bottom: 0 !important; 5 | margin-top: 0; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/keep-query-order.min.css: -------------------------------------------------------------------------------- 1 | .foo{z-index:0}@media (min-width:99px){.foo{z-index:1}.bar{z-index:2}}@media (min-width:999px){.foo{z-index:3}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/single-query.min.css: -------------------------------------------------------------------------------- 1 | .foo{z-index:1}.bar{z-index:2}.baz{z-index:3}@media (min-width:999px){.foo{z-index:4}.bar{z-index:5}.baz{z-index:6}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part15.6.css: -------------------------------------------------------------------------------- 1 | a { 2 | font-weight: bold 3 | } 4 | 5 | b { 6 | font-weight: normal 7 | } 8 | 9 | c { 10 | font-weight: bolder 11 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/138-1.css: -------------------------------------------------------------------------------- 1 | xxxxxxxxxxxxxxxxxxxx::-ms-clear 2 | { 3 | tesplay: none; 4 | } 5 | 6 | .aaaa 7 | { 8 | tesplay: none; 9 | font: x 10 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/79-1.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'ptsans';src:url(i-font_face_ptsans.woff),url(i-font_face_ptsans.ttf)}.i-font_face_ptsans{font-family:'ptsans'} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/9.css: -------------------------------------------------------------------------------- 1 | /* shouldn't join .a & .c since .b has the same specificity */ 2 | .a { color: red; } 3 | .b { color: green; } 4 | .c { color: red; } 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/12.min.css: -------------------------------------------------------------------------------- 1 | .a{color:red}@media foo{@supports (a:1){.b{color:#00f}}}.c{color:red}@supports (b:1){@media bar{.d{color:#00f}}}.e{color:red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/4-1.min.css: -------------------------------------------------------------------------------- 1 | .a{padding:1px 2px 3px 4px}.b{padding:2px 1px 1px}.c{padding:2px 2px 1px 1px}.d{padding:1px 2px}.e{padding:1px 2px 3px 4px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-2.css: -------------------------------------------------------------------------------- 1 | @keyframes test { 2 | 0% { color: red } 3 | 50% { color: green } 4 | 60% { color: red } 5 | 100% { color: green } 6 | } 7 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-7.min.css: -------------------------------------------------------------------------------- 1 | color{a0:#000;a1:#111;a2:#222;a3:#333;a4:#444;a5:#555;a6:#666;a7:#777;a8:#888;a9:#999;a10:#aaa;a11:#bbb;a12:#ccc;a13:#ddd;a14:#eee;a15:#fff} -------------------------------------------------------------------------------- /test/fixture/compress/issue/_39-27.css: -------------------------------------------------------------------------------- 1 | b, c, x:test { 2 | color: blue; 3 | } 4 | b, a, x:test { 5 | color: red 6 | } 7 | a, c, x:test { 8 | color: green 9 | } 10 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/11.css: -------------------------------------------------------------------------------- 1 | .a { a: 1; b: 2; } 2 | b { a: 1; b: 2; c: 2; } 3 | .c { a: 1; b: 1; c: 1; } 4 | /*! better solution .a,.c,b{a:1;b:2}b{c:2}.c{b:1;c:1}*/ 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/4.css: -------------------------------------------------------------------------------- 1 | a { 2 | p0: v; 3 | } 4 | bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb { 5 | p0: v; 6 | p1: v; 7 | } 8 | c { 9 | p1: v; 10 | } -------------------------------------------------------------------------------- /test/fixture/usage/black-white-1.css: -------------------------------------------------------------------------------- 1 | .foo { p: 1 } 2 | #foo { p: 2 } 3 | foo { p: 3 } 4 | .foo, .bar, #foo, #bar, foo, bar { p: 4 } 5 | * { p: 5 } 6 | :not(.foo), :not(.bar) { p: 6 } 7 | -------------------------------------------------------------------------------- /test/fixture/compress/initial.font.min.css: -------------------------------------------------------------------------------- 1 | .a{font:600 9px Charcoal}.b{font:500 Charcoal}.c{font:400 Charcoal}.d{font:500 medium/10px Charcoal}.e{font:normal}.f{font:700}.g{font:normal} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-2.css: -------------------------------------------------------------------------------- 1 | .test1{margin-top:0} 2 | .test2{margin-top:100px} 3 | .test1{margin-left:0} 4 | .test1{margin-bottom:0} 5 | .test1{margin-right:0} 6 | .test1{margin-top:0} -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-2.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | margin-top: 0 !important; 3 | margin-right: 0 !important; 4 | margin-bottom: 0 !important; 5 | margin-left: 0 !important; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/issue/81-1.min.css: -------------------------------------------------------------------------------- 1 | div{height:-webkit-calc(100% - 30px);height:-moz-calc(100% - 30px);height:-ms-calc(100% - 30px);height:-o-calc(100% - 30px);height:calc(100% - 30px)} -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/3.min.css: -------------------------------------------------------------------------------- 1 | .test{width:calc(3em - 3px);width:calc(3rem - 3px);width:calc((1vh + 3px) - 3rem);color:var(--foo, red);color:var(--foo, rgba(255, 0, 0, .5))} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/12.css: -------------------------------------------------------------------------------- 1 | .a { a: 1; b: 2; c: 1; } 2 | b { a: 1; b: 2; c: 2; } 3 | .c { a: 1; b: 1; c: 1; } 4 | /*! better solution .a,.c,b{a:1;b:2;c:1}b{c:2}.c{b:1} */ 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/8.css: -------------------------------------------------------------------------------- 1 | /* should join a & c since blocks are equal, and don't colease with b */ 2 | a { color: red; } 3 | b { color: green; } 4 | c { color: red; } 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-2.min.css: -------------------------------------------------------------------------------- 1 | .foo{foo:a!important;bar:c}.bar{foo:b;bar:c} 2 | /*! better solution 3 | .foo{foo:a!important}.bar,.foo{foo:b;bar:c} 4 | */ 5 | -------------------------------------------------------------------------------- /test/fixture/compress/unicode-range.css: -------------------------------------------------------------------------------- 1 | a { 2 | unicode-range: U+0F00-0FFF; 3 | } 4 | b { 5 | unicode-range: U+0F00??; 6 | } 7 | c { 8 | unicode-range: u+abcdef; 9 | } 10 | -------------------------------------------------------------------------------- /test/fixture/compress/color/issue-176.css: -------------------------------------------------------------------------------- 1 | /* issue #176: don't optimize multiple colors when one of them is converted to a keyword */ 2 | 3 | a { 4 | color: #00f; 5 | color: #f00; 6 | } 7 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/4-1.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:-1px -2px -3px -4px}.b{margin:-2px -1px -1px}.c{margin:-2px -2px -1px -1px}.d{margin:-1px -2px}.e{margin:-1px -2px -3px -4px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/10.css: -------------------------------------------------------------------------------- 1 | .a { 2 | margin: 1px 2px 3px 4px; 3 | margin-top: 1rem; 4 | } 5 | .b { 6 | margin: 1rem 2rem 3rem 4rem; 7 | margin-top: 5rem; 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/usage/blacklist-1.min.css: -------------------------------------------------------------------------------- 1 | .foo{p:1}#foo{p:3}foo{p:5}*{p:7}:remove{p:8}:has(.bar){p:10}:not(.remove){p:11}:has(:matches(.foo),.bar){complex:1}:not(.remove,#remove,remove){complex:2} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-9.min.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes test{0%{color:red;width:100px}to{color:green;width:100px}}@keyframes test{0%{color:red;width:100px}to{color:green;width:100px}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/other-at-rule.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";@import "import.css";@font-face{font-family:F;src:local("F")}@media (min-width:99px){.foo{z-index:1}.bar{z-index:2}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/3.min.css: -------------------------------------------------------------------------------- 1 | @import 'a'; 2 | /*! should keep this @import as only @import before */ 3 | @import 'b';a{color:red} 4 | /*! should remove this @import as ruleset before */ 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/13.min.css: -------------------------------------------------------------------------------- 1 | .a,.bb,.cc,.dd,.e{-webkit-a:1;a:1}.a{b:0;-webkit-c:1;c:1}.bb{b:1;-webkit-c:2;c:2}.cc{-webkit-c:3;c:3}.dd{-webkit-c:4;c:4}.e{-webkit-c:none;c:none} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/14.min.css: -------------------------------------------------------------------------------- 1 | ea,ebb,ecc,edd,ee{-webkit-a:1;a:1}ea{b:0;-webkit-c:1;c:1}ebb{b:1;-webkit-c:2;c:2}ecc{-webkit-c:3;c:3}edd{-webkit-c:4;c:4}ee{-webkit-c:none;c:none} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/6.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 0px !important; 3 | margin-right: 1px !important; 4 | margin-bottom: 2px !important; 5 | margin-left: 3px !important; 6 | } -------------------------------------------------------------------------------- /test/fixture/usage/scopes-3.css: -------------------------------------------------------------------------------- 1 | .a .b { 2 | opacity: 1; 3 | } 4 | .foo { 5 | opacity: 0; 6 | color: #ff0000; 7 | } 8 | .bar { 9 | opacity: 1; 10 | display: block; 11 | } 12 | -------------------------------------------------------------------------------- /lib/clean/Declaration.js: -------------------------------------------------------------------------------- 1 | module.exports = function cleanDeclartion(node, item, list) { 2 | if (node.value.children && node.value.children.isEmpty()) { 3 | list.remove(item); 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /test/fixture/compress/complicated/_2.css: -------------------------------------------------------------------------------- 1 | .prevent, .class1, .class2 { 2 | float: left; 3 | margin-right: 10px; 4 | } 5 | 6 | .class1 {width: 30px;} 7 | 8 | .class2 {width: 950px; margin-right: 0;} 9 | -------------------------------------------------------------------------------- /test/fixture/compress/complicated/_3.css: -------------------------------------------------------------------------------- 1 | .prevent, .class2, .class1 { 2 | float: left; 3 | margin-right: 10px; 4 | } 5 | 6 | .class1 {width: 30px;} 7 | 8 | .class2 {width: 950px; margin-right: 0;} 9 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-8.min.css: -------------------------------------------------------------------------------- 1 | a{color0:#000;color1:#00f;color2:#0f0;color3:red;color4:#0ff;color5:#ff0;color6:#f0f;color7:#fff;color8:gray;color9:silver;color10:#010101;color11:#fff} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-4.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | margin-top: 0 !important; 3 | margin-right: 0 !important; 4 | } 5 | .foo { 6 | margin-bottom: 0 !important; 7 | margin-left: 0 !important; 8 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/10.min.css: -------------------------------------------------------------------------------- 1 | .a,.b{color:red}@media foo{a{color:#00f}.c.d{padding:1px}@supports (a:1){.c.d{a:1}}}@supports (a:1){a{color:#00f}.c.d{padding:1px}@media bar{.c.d{a:1}}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/9.css: -------------------------------------------------------------------------------- 1 | /* 2 | should merge rules because different tag names 3 | */ 4 | 5 | a.foo:foo { color: red } 6 | b.bar:foo { color: green } 7 | c.baz:foo { color: red } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/9.min.css: -------------------------------------------------------------------------------- 1 | .a{margin:inherit}.b{margin:initial}.c{margin:unset}.d{margin:revert}.e{margin-top:inherit;margin-right:initial;margin-bottom:unset;margin-left:revert} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/6.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 0px !important; 3 | padding-right: 1px !important; 4 | padding-bottom: 2px !important; 5 | padding-left: 3px !important; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/unicode-in-ident.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #191 should properly process unicode sequence in ident 3 | */ 4 | 5 | .\31 0\+, 6 | .\31 5\+, 7 | .\32 0\+ { 8 | color: red; 9 | } 10 | -------------------------------------------------------------------------------- /test/fixture/compress/display.min.css: -------------------------------------------------------------------------------- 1 | .test{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:inline-block;display:table-cell;display:grid;display:flex} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/134.min.css: -------------------------------------------------------------------------------- 1 | a{border-color:transparent transparent transparent #fd0}b{border-color:rgba(0,0,0,.2) rgba(0,0,0,.1)}c{border-color:#1a1a1a #000 rgba(127,127,127,.5) rgba(28,23,23,.1)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/78-1.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | margin-top: 0 !important; 3 | margin-right: 0 !important; 4 | margin-bottom: 0 !important; 5 | margin-left: 0 !important; 6 | margin-top: 0; 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/2.min.css: -------------------------------------------------------------------------------- 1 | a{padding:20px;padding:1.25rem;border-radius:20px;border-radius:1.25rem}b{width:10px;width:10vh;width:10vmax;height:10px;height:10vw;height:10vmin;height:10vm} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1; 3 | color: red; 4 | margin: 2 5 | } 6 | b { 7 | p: v 8 | } 9 | a { 10 | margin: 3; 11 | margin-left: 4 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/6.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: -0px !important; 3 | margin-right: -1px !important; 4 | margin-bottom: -2px !important; 5 | margin-left: -3px !important; 6 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | } 4 | b { 5 | margin-right: 2px; 6 | } 7 | c { 8 | margin-bottom: 3px; 9 | } 10 | d { 11 | margin-left: 4px; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-6.min.css: -------------------------------------------------------------------------------- 1 | @keyframes test{0%,60%,75%,90%,to{-webkit-a:1;a:1}0%{b:0;-webkit-c:2;c:2}60%{b:1;-webkit-c:3;c:3}75%{-webkit-c:4;c:4}90%{-webkit-c:5;c:5}to{-webkit-c:none;c:none}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/mess/_3.css: -------------------------------------------------------------------------------- 1 | // /* 2 | // .a { color: rgb(255, 255, 255) } 3 | 4 | .a { color: red } 5 | 6 | /*test*/ 7 | // */ 8 | /*test*/ 9 | 10 | .b { color: red } 11 | 12 | // something strange -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/15.css: -------------------------------------------------------------------------------- 1 | .a .b { 2 | opacity: 1; 3 | } 4 | .foo { 5 | opacity: 0; 6 | color: #ff0000; 7 | } 8 | .bar { 9 | opacity: 1; 10 | display: block; 11 | } 12 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.padding/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 1; 3 | color: red; 4 | padding: 2 5 | } 6 | b { 7 | p: v 8 | } 9 | a { 10 | padding: 3; 11 | padding-left: 4 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 1px; 3 | } 4 | b { 5 | padding-right: 2px; 6 | } 7 | c { 8 | padding-bottom: 3px; 9 | } 10 | d { 11 | padding-left: 4px; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-1.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes test { 2 | 0% { color: red } 3 | 100% { color: green } 4 | } 5 | @keyframes test { 6 | from { color: red } 7 | 100% { color: green } 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/compress/colormark.css: -------------------------------------------------------------------------------- 1 | .a { 2 | color: #fff; 3 | color: rgb(100, 100, 100); 4 | color: rgba(100, 100, 100, .5); 5 | color: hsl(0, 100%, 50%); 6 | color: hsla(0, 100%, 50%, .5); 7 | } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/57-2.css: -------------------------------------------------------------------------------- 1 | a { 2 | clip: rect(0 0 0 0); 3 | clip: rect(0,0,0,0); 4 | } 5 | b { 6 | color: red 7 | } 8 | a { 9 | clip: rect(0 0 0 0); 10 | clip: rect(0,0,0,0); 11 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.filter.min.css: -------------------------------------------------------------------------------- 1 | .a{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='x', sizingMethod="y");filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='y', sizingMethod="z")} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/2-1.css: -------------------------------------------------------------------------------- 1 | .a { 2 | margin-top: 1; 3 | color: red; 4 | margin: 2 5 | } 6 | .b { 7 | p: v 8 | } 9 | .a { 10 | margin: 3; 11 | margin-left: 4 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/1.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: -1px; 3 | } 4 | b { 5 | margin-right: -2px; 6 | } 7 | c { 8 | margin-bottom: -3px; 9 | } 10 | d { 11 | margin-left: -4px; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/5.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | margin-right: 2%; 4 | } 5 | b { 6 | color: red; 7 | } 8 | a { 9 | margin-bottom: auto; 10 | margin-left: 0.00; 11 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/_media-6.css: -------------------------------------------------------------------------------- 1 | /* media with no media query should be removed */ 2 | 3 | @media { 4 | .foo { color: red } 5 | } 6 | 7 | @media /* comment */ { 8 | .bar { color: red } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/170.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 170 3 | wrong optimization in background value list 4 | */ 5 | 6 | .foo { 7 | background: url(old.jpg); 8 | background: none, url(hotness.svg); 9 | } 10 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/81-3.css: -------------------------------------------------------------------------------- 1 | a { 2 | height: -webkit-calc(100% - 30px); 3 | height: -moz-calc(100% - 30px); 4 | } 5 | b { 6 | height: -webkit-calc(100% - 30px); 7 | height: -ms-calc(100% - 30px); 8 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/10.css: -------------------------------------------------------------------------------- 1 | /* should join .a & .c since .b has different (lower) specificity and order doesn't matter */ 2 | .a:hover { color: red; } 3 | .b { color: green; } 4 | .c:hover { color: red; } 5 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-1.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 280 regual and regular 3 | */ 4 | 5 | .foo { 6 | foo: a; 7 | bar: c; 8 | } 9 | 10 | .bar { 11 | foo: b; 12 | bar: c; 13 | } 14 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.padding/3.css: -------------------------------------------------------------------------------- 1 | .a { 2 | padding-top: 1; 3 | color: red; 4 | padding: 2 5 | } 6 | .b { 7 | p: v 8 | } 9 | .a { 10 | padding: 3; 11 | padding-left: 4 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.unary/5.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: -1px; 3 | margin-right: -2%; 4 | } 5 | b { 6 | color: red; 7 | } 8 | a { 9 | margin-bottom: auto; 10 | margin-left: -0.00; 11 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.padding/5.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-top: 1px; 3 | padding-right: 2%; 4 | } 5 | b { 6 | color: red; 7 | } 8 | a { 9 | padding-bottom: auto; 10 | padding-left: 0.00; 11 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 4 8 | end_of_line = lf 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/supports-2.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #273 shouldn't compress length dimension outside declaration 3 | */ 4 | @supports (width: 0px) and (test: 0deg) { 5 | .test { 6 | foo: 1 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/138-2.css: -------------------------------------------------------------------------------- 1 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx::-ms-clear 2 | { 3 | xxxxxxxxxxxxtesplay: none; 4 | } 5 | 6 | a::-ms-clear 7 | { 8 | xxxxxxxxxxxxtesplay: none; 9 | font: x 10 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/more-nested-queries.min.css: -------------------------------------------------------------------------------- 1 | .foo{z-index:1}.bar{z-index:2}@media (min-width:1px){.foo{z-index:3}@supports (display:auto){.foo{z-index:4}@media (min-width:2px){.foo{z-index:5}}}.bar{z-index:6}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/custom-property-issue318.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #318: whitespaces in custom property values shouldn't to be ommited 3 | */ 4 | 5 | .test { 6 | --bar: ; 7 | a: var(--foo, ); 8 | b: var(--foo,); 9 | } 10 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/79-1.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'ptsans'; 3 | src: url('i-font_face_ptsans.woff'), 4 | url('i-font_face_ptsans.ttf'); 5 | } 6 | 7 | .i-font_face_ptsans { 8 | font-family: 'ptsans'; 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/trbl/3.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #139 3 | */ 4 | 5 | .a { 6 | margin: 20px auto; 7 | margin-top: 32px; 8 | } 9 | 10 | .b { 11 | padding: 0; 12 | } 13 | 14 | .a { 15 | margin-bottom: 11px; 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/supports-1.css: -------------------------------------------------------------------------------- 1 | /* issue #258 */ 2 | 3 | @supports ((-webkit-filter: invert(1)) or (filter: invert(1))) { 4 | a:hover { 5 | -webkit-filter: invert(1); 6 | filter: invert(1); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/81-1.css: -------------------------------------------------------------------------------- 1 | div { 2 | height: -webkit-calc(100% - 30px); 3 | height: -moz-calc(100% - 30px); 4 | height: -ms-calc(100% - 30px); 5 | height: -o-calc(100% - 30px); 6 | height: calc(100% - 30px); 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/none-to-zero.min.css: -------------------------------------------------------------------------------- 1 | .o{outline:1px red}.o-none{outline:0}.o-none-red,.o-red-none{outline:red}.o-reverse{outline:1px red}.b{border:1px red}.b-none{border:0}.b-none-red,.b-red-none{border:red}.b-reverse{border:1px red} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-3.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 280 regular and !important 3 | */ 4 | 5 | .foo { 6 | foo: a; 7 | bar: c; 8 | } 9 | 10 | .bar { 11 | foo: b !important; 12 | bar: c; 13 | } 14 | -------------------------------------------------------------------------------- /test/fixture/compress/trbl/2.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #139 3 | */ 4 | 5 | #footer { 6 | margin: 20px auto; 7 | margin-top: 32px; 8 | } 9 | 10 | p { 11 | padding: 0; 12 | } 13 | 14 | #footer { 15 | margin-bottom: 11px; 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/trbl/4.css: -------------------------------------------------------------------------------- 1 | .a { 2 | padding: 1px 2px 3px 4px; 3 | } 4 | .b { 5 | padding: 1px 2px 3px 2px; 6 | } 7 | .c { 8 | padding: 1px 2px 1px 2px; 9 | } 10 | .d { 11 | padding: 1px 1px 1px 1px; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/16.css: -------------------------------------------------------------------------------- 1 | .a .b { 2 | opacity: 1; 3 | display: inline; 4 | } 5 | .foo { 6 | opacity: 0; 7 | color: #ff0000; 8 | } 9 | .bar { 10 | opacity: 1; 11 | display: block; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/17.css: -------------------------------------------------------------------------------- 1 | .a .b { 2 | opacity: 1; 3 | display: inline; 4 | } 5 | .b .a { 6 | opacity: 0; 7 | color: #ff0000; 8 | } 9 | .bar { 10 | opacity: 1; 11 | display: block; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/18.css: -------------------------------------------------------------------------------- 1 | .a .b { 2 | opacity: 1; 3 | display: inline; 4 | } 5 | .c .b .a { 6 | opacity: 0; 7 | color: #ff0000; 8 | } 9 | .bar { 10 | opacity: 1; 11 | display: block; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/dont.background/2.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background-color: green; 3 | color: red; 4 | background: black 5 | } 6 | .b { 7 | p: v 8 | } 9 | .a { 10 | background: gray; 11 | background-url: url("test") 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/important2.min.css: -------------------------------------------------------------------------------- 1 | a{color:#111!important}b{color:#111}c{color:#222}d{color:#222!important}e{color:#333!ie}f{color:#333}g{color:#444}h{color:#444!ie}i{color:#555!important}j{color:#555!ie}k{color:#666!ie}l{color:#666!important} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/13.css: -------------------------------------------------------------------------------- 1 | /* 2 | should skip non-stylesheet block at-rules 3 | */ 4 | 5 | .a { 6 | color: red; 7 | } 8 | 9 | @font-family { 10 | test: 1; 11 | } 12 | 13 | .b { 14 | color: red; 15 | } 16 | -------------------------------------------------------------------------------- /test/fixture/compress/units/1.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 200: should not remove units in flex since IE10/11 breaks 3 | issue 362: should not remove units in -ms-flex since IE10/11 breaks 4 | */ 5 | a { 6 | -ms-flex: 5 1 0px; 7 | flex: 5 1 0px; 8 | } 9 | -------------------------------------------------------------------------------- /test/fixture/usage/scopes-2.min.css: -------------------------------------------------------------------------------- 1 | .scope1-a,.scope2-a,.scope3-a{color:red}.scope1-a:hover,.scope2-a:hover,.scope3-a:hover{color:#00f}.scope1-a__mod,.scope2-a__mod,.scope3-a__mod{color:green}.something{color:#000}.else{color:#fff}.foo{color:gray} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-3.min.css: -------------------------------------------------------------------------------- 1 | @keyframes test{0%{color:red}50%{color:red;width:100px}to{width:100px}} 2 | /*! better, but not sure is correct (need to be checked): 3 | @keyframes test{0%,50%{color:red}50%,to{width:100px}} 4 | */ 5 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/165.min.css: -------------------------------------------------------------------------------- 1 | @media (min-width:768px) and (max-width:991px){html{color:#000}}@media screen and (min-width:768px){html{color:red}}@media all and (min-width:50px) and (max-width:100px){html{color:green}}@media screen{html{color:gray}} -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-4.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 280 !important and !important 3 | */ 4 | 5 | .foo { 6 | foo: a !important; 7 | bar: c; 8 | } 9 | 10 | .bar { 11 | foo: b !important; 12 | bar: c; 13 | } 14 | -------------------------------------------------------------------------------- /test/fixture/compress/selector/1.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #246: 3 | shouldn't remove descendant combinator 4 | */ 5 | 6 | div.dropdown * { 7 | color: #ff0000; 8 | } 9 | * div { 10 | color: blue; 11 | } 12 | a b { 13 | color: green; 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-5.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-bottom: 1px; 3 | } 4 | b { 5 | margin-left: 1px; 6 | margin-right: 1px; 7 | margin-top: 1px; 8 | } 9 | c { 10 | margin-bottom: 1px; 11 | } 12 | d { 13 | margin-bottom: 1px; 14 | } -------------------------------------------------------------------------------- /test/fixture/usage/black-white-1.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "blacklist": { 3 | "tags": ["foo"], 4 | "ids": ["foo"], 5 | "classes": ["foo"] 6 | }, 7 | "tags": ["foo", "bar"], 8 | "ids": ["foo", "bar"], 9 | "classes": ["foo", "bar"] 10 | } 11 | -------------------------------------------------------------------------------- /test/fixture/usage/scopes-2.css.usage: -------------------------------------------------------------------------------- 1 | { 2 | "scopes": [ 3 | ["scope1-a", "scope1-a:hover", "scope1-a__mod"], 4 | ["scope2-a", "scope2-a:hover", "scope2-a__mod"], 5 | ["scope3-a", "scope3-a:hover", "scope3-a__mod"] 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/multiple-queries.min.css: -------------------------------------------------------------------------------- 1 | .foo{z-index:0}@media (min-width:99px){.foo{z-index:1}.bar{z-index:2}}@media (min-width:999px){.baz{z-index:3}.qux{z-index:4}}@media screen and (min-width:999px){.quux{z-index:5}.corge{z-index:6}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.filter.css: -------------------------------------------------------------------------------- 1 | .a { 2 | filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='x', sizingMethod="y"); 3 | } 4 | 5 | .a { 6 | filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='y', sizingMethod="z"); 7 | } -------------------------------------------------------------------------------- /test/fixture/similarSelectors.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "rule1": "ul#nav, .a .b, ul.a.b {}", "rule2": "div > a, .c .d, li.active {}", "expected": true }, 3 | { "rule1": "ul#nav, .a .b, ul.a.b {}", "rule2": "div > a, .c .d .e, li.active {}", "expected": false } 4 | ] 5 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/2.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: red; 3 | } 4 | 5 | /*! should not merge styles with different comments */ 6 | b-1 { 7 | color: red; 8 | } 9 | b-2 { 10 | color: red; 11 | } 12 | 13 | /*! comment */ 14 | c { 15 | color: red; 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/14.css: -------------------------------------------------------------------------------- 1 | /* 2 | should skip @keyframes 3 | */ 4 | 5 | .a { 6 | color: red; 7 | } 8 | 9 | @keyframes foo { 10 | 0% { frame: 1 } 11 | 100% { frame: 2 } 12 | } 13 | 14 | .b { 15 | color: red; 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/url.min.css: -------------------------------------------------------------------------------- 1 | .should-unquote{a:url(a/b/c);b:url(a/b/c);c:url(a/b/c);d:url(data:image/png;base64,...);e:url(!?#-s93);f:url(\30 aa-asd\-);g:url(asdsdf);h:url(a\"b)}.should-not-unquote{a:url("a b");b:url('a"b');c:url("a'b");d:url("asd sdf")} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/attrib.string/1.css: -------------------------------------------------------------------------------- 1 | [title="test"], 2 | [title="test"i], 3 | [title="test" i ], 4 | [title="123"], 5 | [title="test test"], 6 | [title="test test"i], 7 | [title="test test" i ], 8 | [title="-"], 9 | [title=""] 10 | { 11 | p: v; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/attrib.string/2.css: -------------------------------------------------------------------------------- 1 | [title='test'], 2 | [title='test'i], 3 | [title='test' i ], 4 | [title='123'], 5 | [title='test test'], 6 | [title='test test'i], 7 | [title='test test' i ], 8 | [title='-'], 9 | [title=''] 10 | { 11 | p: v; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/hack9.min.css: -------------------------------------------------------------------------------- 1 | .a{border-top:4px dashed;border-top:4px solid \9}.a-2{border-top:5px dashed;border-top:5px solid\9}.b{margin:5px;margin:4px \9;padding:5px;padding:4px \9;background:10px 20px;background:20px 30px \9}.c{margin:4px 0 0;margin-top:1px \9} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/153.min.css: -------------------------------------------------------------------------------- 1 | a{box-shadow:#fff 0 0 0!important}b{box-shadow:rgba(255,255,255,.5) 0 0 0!important}c{background:#fff no-repeat}d{background:linear-gradient(bottom,#d1d1d1 10%,#fafafa 55%)}e{background-image:linear-gradient(#000,#942222 52%,#fff)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-5-1.css: -------------------------------------------------------------------------------- 1 | .a { 2 | margin-bottom: 1px; 3 | } 4 | .b { 5 | margin-left: 1px; 6 | margin-right: 1px; 7 | margin-top: 1px; 8 | } 9 | .c { 10 | margin-bottom: 1px; 11 | } 12 | .d { 13 | margin-bottom: 1px; 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/39-30.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | margin-right: 1px; 4 | margin-bottom: 1px; 5 | margin-left: 1px; 6 | } 7 | a, :b { 8 | margin-top: 2px; 9 | margin-right: 2px; 10 | margin-bottom: 2px; 11 | margin-left: 2px; 12 | } -------------------------------------------------------------------------------- /test/fixture/compress/color/hls.css: -------------------------------------------------------------------------------- 1 | /* 2 | convert hsl to rgb 3 | */ 4 | 5 | .a { 6 | color: hsl(0, 100%, 50%); 7 | } 8 | .b { 9 | color: hsl(120, 100%, 50%); 10 | } 11 | .c { 12 | color: hsl(210, 65%, 20%); 13 | } 14 | .d { 15 | color: hsl(720, 150%, 50%); 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.2-9.min.css: -------------------------------------------------------------------------------- 1 | a{b:.1em .2ex .3px .4in .5cm .6mm .7pt .8px;c:.001em .002ex .003px .004in .005cm .006mm .007pt .008px;d:8em 7.1ex 6.2px 5.3in 4.4cm 3.5mm 2.6pt 1.7px;e:0 0 0 0 0 0;f:0 0 0% 0% 0% 0 0 0 0;g:0 0 0 0 0 0;h:0s 0s 0s 0s 0s 0s .2s 10.01s;i:10px 10} -------------------------------------------------------------------------------- /test/fixture/compress/issue/317.min.css: -------------------------------------------------------------------------------- 1 | .test{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.2)),to(transparent));-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(,transparent),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,transparent))} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/6.css: -------------------------------------------------------------------------------- 1 | /* 2 | blocks couldn't be merged as in case #5, since values has various browser support 3 | */ 4 | 5 | .a { 6 | color: red; 7 | width: 100px; 8 | } 9 | .b { 10 | width: 100px; 11 | color: rgba(1, 2, 3, .5); 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/important.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin: 0 auto !important; 3 | margin: 0 5%; 4 | 5 | padding: 2px 4px !important; 6 | padding: 1px; 7 | 8 | color: green !important; 9 | color: red; 10 | 11 | text-align: center !important; 12 | text-align: left; 13 | } 14 | -------------------------------------------------------------------------------- /test/fixture/compress/mess/2.css: -------------------------------------------------------------------------------- 1 | .empty {} 2 | .a, .a { 3 | padding: 1px; 4 | color: red; 5 | color: red 6 | } 7 | .b { 8 | color: red; 9 | margin-top: 1px; 10 | padding: 2px 11 | } 12 | .b { 13 | margin: 2px 14 | } 15 | .c { 16 | margin: 2px 17 | } 18 | -------------------------------------------------------------------------------- /test/fixture/compress/not.css: -------------------------------------------------------------------------------- 1 | /* 2 | should not mix :not() with other signatures 3 | */ 4 | 5 | a { 6 | color: red; 7 | } 8 | 9 | a:not(b) { 10 | color: red; 11 | } 12 | 13 | .a:not(.b) { 14 | color: #123; 15 | } 16 | 17 | .c:not(.d) { 18 | color: #123; 19 | } 20 | -------------------------------------------------------------------------------- /test/fixture/compress/redundant-universal.min.css: -------------------------------------------------------------------------------- 1 | #b,.a,::d,:c,:e(),:not(*),:not(.a),[f]{p1:v}#b+#b,.a .a,::d~::d,:c>:c,:e() /deep/ :e(),[f] [f]{p2:v}#b+*,.a *,::d~*,:c>*,:e() /deep/ *,[f] *{p3:v}*,* *,* * *,* /deep/ *,* h1,*+*,*>*,*~*{p4:v}:not(.a,#b,:c,::d,:e(),[f],:not(*),:not(.a)){p5:v} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/cursor.min.css: -------------------------------------------------------------------------------- 1 | .cursor{cursor:row-resize;cursor:alias;cursor:cell;cursor:copy;cursor:ew-resize;cursor:ns-resize;cursor:nesw-resize;cursor:nwse-resize;cursor:context-menu;cursor:none;cursor:inherit;cursor:zoom-in;cursor:zoom-out;cursor:grab;cursor:grabbing}.foo{cursor:url(2)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/hlsa.css: -------------------------------------------------------------------------------- 1 | /* 2 | convert hsla to rgba 3 | */ 4 | 5 | a { 6 | color: hsla(0, 100%, 50%, .5); 7 | } 8 | b { 9 | color: hsla(120, 100%, 50%, 1); 10 | } 11 | c { 12 | color: hsla(359, 100%, 50%, .10); 13 | } 14 | d { 15 | color: hsla(720, 150%, 50%, 1); 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/comment/3.css: -------------------------------------------------------------------------------- 1 | /* should keep this @import as nothing before */ 2 | @import 'a'; 3 | 4 | /*! should keep this @import as only @import before */ 5 | @import 'b'; 6 | a { 7 | color: red; 8 | } 9 | 10 | /*! should remove this @import as ruleset before */ 11 | @import 'c'; 12 | -------------------------------------------------------------------------------- /test/fixture/compress/hack0.min.css: -------------------------------------------------------------------------------- 1 | .a{border-top:4px dashed;border-top:4px solid \0}.a-2{border-top:5px dashed;border-top:5px solid\0}.b{margin:5px;margin:4px \0;padding:5px;padding:4px \0;background:10px 20px;background:20px 30px \0}.c{margin:4px 0 0;margin-top:1px \0}.selector{width:6ch;width:7ch\0} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/11.css: -------------------------------------------------------------------------------- 1 | .a { 2 | margin-top: 5rem; 3 | margin-left: 5rem; 4 | margin-bottom: 5rem; 5 | margin-right: 5rem; 6 | } 7 | .b { 8 | margin-top: 6rem; 9 | margin-left: 7rem; 10 | margin-bottom: 6rem; 11 | margin-right: 7rem; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/initial.background.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: none 3 | } 4 | .b { 5 | background: none center 6 | } 7 | .c { 8 | background: url("test.png") transparent none repeat scroll 9 | } 10 | .d { 11 | *background: url("test2.png") transparent none repeat scroll 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/167.css: -------------------------------------------------------------------------------- 1 | .b { 2 | position: relative; 3 | display: block; 4 | display: block; 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | display: block; 9 | overflow: hidden; 10 | text-indent: 100%; 11 | white-space: nowrap; 12 | } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/226-1.min.css: -------------------------------------------------------------------------------- 1 | .foo{deg:0deg 5.5deg 10deg;grad:0grad 5.5grad 10grad;rad:0rad 5.5rad 10rad;turn:0turn 5.5turn 10turn;s:0s 5.5s 10s;ms:0ms 5.5ms 10ms;Hz:0Hz 5.5Hz 10Hz;kHz:0kHz 5.5kHz 10kHz;dpi:0dpi 5.5dpi 10dpi;dpcm:0dpcm 5.5dpcm 10dpcm;dppx:0dppx 5.5dppx 10dppx;px:0 5.5px 10px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/226-2.min.css: -------------------------------------------------------------------------------- 1 | .foo{deg:0deg 5.5deg 10deg;grad:0grad 5.5grad 10grad;rad:0rad 5.5rad 10rad;turn:0turn 5.5turn 10turn;s:0s 5.5s 10s;ms:0ms 5.5ms 10ms;hz:0hz 5.5hz 10hz;khz:0khz 5.5khz 10khz;dpi:0dpi 5.5dpi 10dpi;dpcm:0dpcm 5.5dpcm 10dpcm;dppx:0dppx 5.5dppx 10dppx;px:0 5.5px 10px} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/226-3.min.css: -------------------------------------------------------------------------------- 1 | .foo{deg:0DEG 5.5DEG 10DEG;grad:0GRAD 5.5GRAD 10GRAD;rad:0RAD 5.5RAD 10RAD;turn:0TURN 5.5TURN 10TURN;s:0S 5.5S 10S;ms:0MS 5.5MS 10MS;hz:0HZ 5.5HZ 10HZ;khz:0KHZ 5.5KHZ 10KHZ;dpi:0DPI 5.5DPI 10DPI;dpcm:0DPCM 5.5DPCM 10DPCM;dppx:0DPPX 5.5DPPX 10DPPX;px:0 5.5PX 10PX} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-3.css: -------------------------------------------------------------------------------- 1 | @keyframes test { 2 | 0% { color: red; } 3 | 50% { color: red; width: 100px; } 4 | 100% { width: 100px; } 5 | } 6 | 7 | /*! better, but not sure is correct (need to be checked): 8 | @keyframes test{0%,50%{color:red}50%,to{width:100px}} 9 | */ 10 | -------------------------------------------------------------------------------- /test/fixture/compress/bad-color.min.css: -------------------------------------------------------------------------------- 1 | .a1{color:rgb(1,2)}.a2{color:rgb(1,2,bad)}.a3{color:rgb(1,2 2,3)}.a4{color:rgb(1,2%,3)}.a5{color:rgb(1,2+,3)}.a6{color:rgb(1,2,3,4)}.a7{color:rgba(1,2,3)}.a8{color:rgba(1,2,3,4%)}.a9{color:rgba(1,2,3,4,5)}.a0{color:hsl(1%,2%,3%)}.b1{color:hsl(1,2,3)}.b2{color:rgb(1,2%3,3)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgb-percent.css: -------------------------------------------------------------------------------- 1 | /* 2 | interpolate percentage values in rgb 3 | http://www.w3.org/TR/css3-color/#rgb-color 4 | */ 5 | 6 | a { 7 | color: rgb(100%, -10%, 0%); 8 | } 9 | b { 10 | color: rgb(100%, +50%, 0%); 11 | } 12 | c { 13 | color: rgb(100%, 110%, 120%); 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/165.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 768px) and (max-width: 991px) { html{ color: black; } } 2 | @media screen and (min-width: 768px) { html{ color: red; } } 3 | @media all and (min-width: 50px) and (max-width: 100px) { html{ color: green; } } 4 | @media screen { html{ color: gray; } } -------------------------------------------------------------------------------- /test/fixture/compress/issue/76-4.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | margin-left: 1px; 4 | } 5 | b { 6 | color: red; 7 | } 8 | a { 9 | margin-right: 1px; 10 | margin-bottom: 1px; 11 | } 12 | c { 13 | color: red; 14 | } 15 | a { 16 | margin-top: 2px; 17 | margin-bottom: 2px; 18 | } -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/1.min.css: -------------------------------------------------------------------------------- 1 | a{width:100px;width:calc(50% - 20px);transform:translate(50%,50%);transform:translate3d(50%,50%,0);-ms-transform:translate(-100%,0);-ms-transform:translate3d(-100%,0,0)}b{width:calc(10% + 10px);transform:rotate(150deg)}d{filter:url(blur.svg#blur);filter:blur(5px)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/8.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #264 don't merge rulesets if between them a ruleset with the same specificity 3 | */ 4 | 5 | .foo.bar { 6 | top: -50px 7 | } 8 | 9 | .foo.bar.in, 10 | .baz.qux { 11 | top: 0 12 | } 13 | 14 | .foo.bar.out { 15 | top: -50px 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgb-clipping.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #181: rgb values should be clipped to 0..255 range 3 | http://www.w3.org/TR/css3-color/#rgb-color 4 | */ 5 | 6 | a { 7 | color: rgb(255, -10, 0); 8 | } 9 | b { 10 | color: rgb(255, +17, 0); 11 | } 12 | c { 13 | color: rgb(256, 256, 256); 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/empty.css: -------------------------------------------------------------------------------- 1 | @charset; 2 | @font { 3 | /* empty */ 4 | } 5 | @font { 6 | /* single bad declaration */ 7 | foo: ; 8 | } 9 | @media x { 10 | /* empty */ 11 | } 12 | @media x { 13 | /* ruleset with single bad declaration */ 14 | a { 15 | test: ; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixture/compress/trbl/1.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #175: wrong trbl merge 3 | */ 4 | 5 | .bar 6 | { 7 | padding: 20px 0 10px 46px; 8 | } 9 | 10 | .bar 11 | { 12 | padding-bottom: 15px; 13 | } 14 | 15 | .any-selector 16 | { 17 | padding: 3px 5px; 18 | } 19 | 20 | .bar 21 | { 22 | padding-top: 0; 23 | } 24 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/54.css: -------------------------------------------------------------------------------- 1 | .a { 2 | background: transparent !important 3 | } 4 | .b { 5 | background: none !important 6 | } 7 | .c { 8 | background: repeat !important 9 | } 10 | .d { 11 | background: scroll !important 12 | } 13 | .e { 14 | background: transparent none repeat scroll !important 15 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/5.css: -------------------------------------------------------------------------------- 1 | /* 2 | blocks could be merged as consequence block override common styles 3 | .a, .b { color: red; width: 100px } 4 | .b { color: green } 5 | */ 6 | 7 | .a { 8 | color: red; 9 | width: 100px; 10 | } 11 | .b { 12 | width: 100px; 13 | color: green; 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-280-2.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 280 !important and regular 3 | */ 4 | 5 | .foo { 6 | foo: a !important; 7 | bar: c; 8 | } 9 | 10 | .bar { 11 | foo: b; 12 | bar: c; 13 | } 14 | 15 | /*! better solution 16 | .foo{foo:a!important}.bar,.foo{foo:b;bar:c} 17 | */ 18 | -------------------------------------------------------------------------------- /test/fixture/compress/trbl/issue297.css: -------------------------------------------------------------------------------- 1 | .a { 2 | padding: 10px; 3 | padding: calc(1px + 2px); 4 | } 5 | 6 | .b { 7 | padding: 20px; 8 | padding: 50px; 9 | } 10 | 11 | .c { 12 | padding: calc(20px + 10px); 13 | padding: calc(10px + 7px); 14 | } 15 | 16 | .d { 17 | padding: calc(20px + 10px); 18 | padding: 50px; 19 | } -------------------------------------------------------------------------------- /lib/replace/Atrule.js: -------------------------------------------------------------------------------- 1 | var resolveKeyword = require('css-tree').keyword; 2 | var compressKeyframes = require('./atrule/keyframes'); 3 | 4 | module.exports = function(node) { 5 | // compress @keyframe selectors 6 | if (resolveKeyword(node.name).name === 'keyframes') { 7 | compressKeyframes(node); 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgba-1.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #122: rgba with 1 as alpha value should be converted to rgb 3 | http://www.w3.org/TR/css3-color/#rgba-color 4 | */ 5 | 6 | a { 7 | color: rgba(100%, -10%, 0%, 1); 8 | } 9 | b { 10 | color: rgba(255, 0, 0, 1); 11 | } 12 | c { 13 | color: rgba(255, 0, 0, 3); 14 | } 15 | -------------------------------------------------------------------------------- /lib/replace/String.js: -------------------------------------------------------------------------------- 1 | module.exports = function(node) { 2 | var value = node.value; 3 | 4 | // remove escaped newlines, i.e. 5 | // .a { content: "foo\ 6 | // bar"} 7 | // -> 8 | // .a { content: "foobar" } 9 | value = value.replace(/\\(\r\n|\r|\n|\f)/g, ''); 10 | 11 | node.value = value; 12 | }; 13 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgba.css: -------------------------------------------------------------------------------- 1 | /* 2 | percentage values in rgba should be interpolated 3 | */ 4 | 5 | a { 6 | color: rgba(100%, 25%, 0%, .50); 7 | } 8 | b { 9 | color: rgba(150%, -25%, 0%, 0.5); 10 | } 11 | 12 | /* 13 | values should be clipped 14 | */ 15 | 16 | c { 17 | color: rgba(+255, -100, 0, +.2); 18 | } 19 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/317.css: -------------------------------------------------------------------------------- 1 | .test { 2 | background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .2)), to(rgba(0, 0, 0, 0))); 3 | -webkit-mask-box-image: -webkit-gradient(linear, left top, right top, color-stop(, rgba(0, 0, 0, 0)), color-stop(.5, rgba(0, 0, 0, .8)), color-stop(1, rgba(0, 0, 0, 0))) 4 | } 5 | -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/3.css: -------------------------------------------------------------------------------- 1 | /* 2 | should check nested parts of value when compute compatibility 3 | */ 4 | 5 | .test { 6 | width: calc(3em - 3px); 7 | width: calc(3rem - 3px); 8 | width: calc((1vh + 3px) - 3rem); 9 | color: var(--foo, red); 10 | color: var(--foo, rgba(255, 0, 0, .5)); 11 | } 12 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin.padding.css: -------------------------------------------------------------------------------- 1 | a { 2 | margin-top: 1px; 3 | margin-right: 2px; 4 | color: red; 5 | padding-bottom: 1px; 6 | padding-left: 2px; 7 | } 8 | a { 9 | margin-bottom: 3px; 10 | margin-left: 4px; 11 | z-index: 10; 12 | padding-top: 3px; 13 | padding-right: 4px; 14 | } -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/8.min.css: -------------------------------------------------------------------------------- 1 | .a{margin-top:inherit;margin-right:1px;margin-bottom:2px;margin-left:3px}.b{margin-top:4px;margin-right:initial;margin-bottom:5px;margin-left:6px}.c{margin-top:7px;margin-right:8px;margin-bottom:unset;margin-left:9px}.d{margin-top:10px;margin-right:11px;margin-bottom:12px;margin-left:revert} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-4.min.css: -------------------------------------------------------------------------------- 1 | @keyframes fadein{0%{opacity:0;transform:scale(.95)}30%,70%{opacity:1;transform:scale(1)}to{transform:scale(1);opacity:0}} 2 | /*! better, but not sure is correct (need to be checked): 3 | @keyframes fadein{0%{transform:scale(.95)}30%,70%,to{opacity:1;transform:scale(1)}0%,to{opacity:0}} 4 | */ 5 | -------------------------------------------------------------------------------- /test/fixture/compress/complicated/1.min.css: -------------------------------------------------------------------------------- 1 | blockquote,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}dl,ol,ul{line-height:1.25;margin-bottom:1rem;list-style-position:outside}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0;list-style-type:inherit} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-8.min.css: -------------------------------------------------------------------------------- 1 | body{margin:0;padding:0;font-family:sans-serif}.App{text-align:center}.App-logo{animation:App-logo-spin infinite 20s linear;height:80px}.App-header{background-color:#222;height:150px;padding:20px;color:#fff}.App-intro{font-size:large}@media all and (max-width:100px){.jonas,.loboto,.lorelei{font-size:30px}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/7.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #264 don't merge rulesets if between them a ruleset with the same specificity 3 | */ 4 | 5 | .notification-banner.drop { 6 | top: -50px 7 | } 8 | 9 | .notification-banner.drop.in { 10 | top: 0 11 | } 12 | 13 | .notification-banner.drop.out { 14 | top: -50px 15 | } 16 | -------------------------------------------------------------------------------- /test/fixture/compress/units/3.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #244: 3 | safe units should merge with keyword values 4 | */ 5 | 6 | .transfers.is-toggle-visible { 7 | display: block; 8 | } 9 | 10 | .transfer { 11 | display: inline-block; 12 | width: 120px; 13 | width: 134px; 14 | width: 140px; 15 | display: block; 16 | width: auto; 17 | } 18 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-10.css: -------------------------------------------------------------------------------- 1 | /* @keyframes with no name should be removed */ 2 | 3 | @keyframes { 4 | from { top: 0 } 5 | } 6 | 7 | @keyframes /*comment*/ { 8 | to { top: 0 } 9 | } 10 | 11 | @-webkit-keyframes { 12 | from { top: 0 } 13 | } 14 | 15 | @-webkit-keyframes /*comment*/ { 16 | to { top: 0 } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixture/compress/color/keyword-to-hex-1.min.css: -------------------------------------------------------------------------------- 1 | .test{color:#000;background:url(1) #000;font:10px Arial black;transition:1s black ease-in;unknown:black}.test-case-insensitive{COLOR:#000;BACKGROUND:url(2) #000;FONT:10px Arial BLACK;TRANSITION:2s black ease-in;UNKNOWN:BLACK}@supports (background:url(3) #000) and (font:10px Arial black){.test{color:#000}} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/_supports-3.css: -------------------------------------------------------------------------------- 1 | /* @supports with no expression should be removed */ 2 | 3 | @supports { 4 | .foo { top: 0 } 5 | } 6 | 7 | @supports /*comment*/ { 8 | .bar { top: 0 } 9 | } 10 | 11 | @-webkit-supports { 12 | .foo { top: 0 } 13 | } 14 | 15 | @-webkit-supports /*comment*/ { 16 | .bar { top: 0 } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-12.css: -------------------------------------------------------------------------------- 1 | /* keyframes should be lifted up but after @charset and @import */ 2 | 3 | @charset 'utf-8'; 4 | /* comment */ 5 | @import 'something'; 6 | 7 | @keyframes foo { 8 | from { top: 0 } 9 | } 10 | 11 | .rule { 12 | color: red; 13 | } 14 | 15 | @-webkit-keyframes foo { 16 | from { top: 0 } 17 | } 18 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/keyframes-8.css: -------------------------------------------------------------------------------- 1 | @keyframes test { 2 | 60%, 90%, 100% { 3 | -webkit-a: 1; 4 | a: 1; 5 | } 6 | 7 | 60% { 8 | b: 1; 9 | -webkit-c: 3; 10 | c: 3; 11 | } 12 | 13 | 90% { 14 | -webkit-c: 5; 15 | c: 5; 16 | } 17 | 18 | 100% { 19 | -webkit-c: none; 20 | c: none; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/134.css: -------------------------------------------------------------------------------- 1 | a { 2 | border-color: rgba(255, 255, 255, 0) rgba(255, 255, 255, 0) rgba(255, 255, 255, 0) #fd0; 3 | } 4 | b { 5 | border-color: rgba(0, 0, 0, .2) rgba(0, 0, 0, .1) rgba(0, 0, 0, .2) rgba(0, 0, 0, .1); 6 | } 7 | c { 8 | border-color: hsl(0, 0%, 10%) rgb(0, 0, 0) rgba(127, 127, 127, 0.5) hsla(0, 10%, 10%, 0.1); 9 | } -------------------------------------------------------------------------------- /test/fixture/compress/restructure.margin/3.css: -------------------------------------------------------------------------------- 1 | .a { 2 | _margin-top: 1; 3 | _margin: 2; 4 | margin-top: 3; 5 | margin: 4; 6 | } 7 | .b { 8 | *margin-top: 5; 9 | *margin: 6; 10 | margin-top: 7; 11 | margin: 8; 12 | } 13 | .c { 14 | //margin-top: 9; 15 | //margin: 10; 16 | margin-top: 11; 17 | margin: 12; 18 | } -------------------------------------------------------------------------------- /test/fixture/usage/ids-1.min.css: -------------------------------------------------------------------------------- 1 | div{p:1}#foo{p:2}#bar{p:3}div#foo>*{p:4}:not(#foo){p:7}:not(#remove){p:8}.class{p:9}*{p:10}:matches(#foo){matches:1}:matches(#bar){matches:3}:has(>#foo){has:1}:has(#bar){has:3}:nth-child(2n of #foo){nth:1}:nth-child(2n of #bar){nth:3}#foo,:has(#bar),:has(:matches(#foo)){complex:1}:has(:matches(:not(#a))),:has(:not(:matches(#a))){complex:2} 2 | -------------------------------------------------------------------------------- /test/fixture/usage/classes-1.min.css: -------------------------------------------------------------------------------- 1 | div{p:1}.foo{p:2}.bar{p:3}div.foo>*{p:4}:not(.foo){p:7}:not(.remove){p:8}#id{p:9}*{p:10}:matches(.foo){matches:1}:matches(.bar){matches:3}:has(>.foo){has:1}:has(.bar){has:3}:nth-child(2n of .foo){nth:1}:nth-child(2n of .bar){nth:3}.foo,:has(.bar),:has(:matches(.foo)){complex:1}:has(:matches(:not(.a))),:has(:not(:matches(.a))){complex:2} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/shorthand.margin/_12.css: -------------------------------------------------------------------------------- 1 | .a { 2 | margin-top: 2px; 3 | margin-top: 2rem; 4 | margin-left: 3rem; 5 | margin-left: 3px; 6 | margin-bottom: 0; 7 | margin-right: 0; 8 | } 9 | .b { 10 | margin-top: 10px; 11 | margin-left: 11px; 12 | margin-left: 3px\9; 13 | margin-bottom: 12px; 14 | margin-right: 13px; 15 | } 16 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-7.css: -------------------------------------------------------------------------------- 1 | /* compress.options{ "forceMediaMerge": true } */ 2 | 3 | .foo { 4 | color: white; 5 | } 6 | 7 | @media (min-width: 100px) { 8 | .foo { 9 | color: red; 10 | } 11 | } 12 | 13 | .foo { 14 | color: blue; 15 | } 16 | 17 | @media (min-width: 100px) { 18 | .foo { 19 | color: green; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/fixture/compress/dont.background/3.min.css: -------------------------------------------------------------------------------- 1 | .a{background:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(#000));background:-webkit-linear-gradient(top,transparent,#000);background:-moz-linear-gradient(top,transparent,#000);background:-o-linear-gradient(top,transparent,#000);background:linear-gradient(top,transparent,#000)}.b{background:#fff;background:rgba(255,255,255,.5)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/50-2.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'pictos';src:url(../fonts/pictos-web.eot);src:local('☺'),url(data:application/x-font-woff;charset=utf-8;base64,longbase64encodedstring) format('woff'),url(data:font/truetype;charset=utf-8;base64,otherlongbase64encodedstring) format('truetype'),url(pictos-web.svg#webfontIyfZbseF) format('svg');font-weight:400;font-style:normal} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/units/2.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #222: units for zero values shouldn't to be remove inside calc 3 | TODO: better solution is to remove zero values entirely, but it's too complex for now 4 | */ 5 | 6 | a { 7 | width: calc(100vw / 2 - 6px + 0px); 8 | } 9 | b { 10 | width: calc((5% + 0px) - (2em - 0px)); 11 | } 12 | c { 13 | width: calc(10px + 0px); 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/usage/blacklist-1.css: -------------------------------------------------------------------------------- 1 | .foo { p: 1 } 2 | .remove { p: 2 } 3 | #foo { p: 3 } 4 | #remove { p: 4 } 5 | foo { p: 5 } 6 | remove { p: 6 } 7 | * { p: 7 } 8 | :remove { p: 8 } 9 | .foo > .remove { p: 9 } 10 | :has(.remove, .bar) { p: 10 } 11 | :not(.remove) { p: 11 } 12 | :has(:matches(.foo, .remove), .bar) { complex: 1 } 13 | :not(.remove, #remove, remove) { complex: 2 } 14 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.20.min.css: -------------------------------------------------------------------------------- 1 | a{b:(.1em) (.2ex) (.3px) (.4in) (.5cm) (.6mm) (.7pt) (.8px);c:(.001em) (.002ex) (.003px) (.004in) (.005cm) (.006mm) (.007pt) (.008px);d:(8em) (7.1ex) (6.2px) (5.3in) (4.4cm) (3.5mm) (2.6pt) (1.7px);e:(0) (0) (0) (0) (0) (0);f:(0) (0) (0%) (0%) (0%) (0) (0) (0) (0);g:(0) (0) (0) (0) (0) (0);h:(0s) (0s) (0s) (0s) (0s) (0s) (.2s) (10.01s);i:(10px) (10)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/none-to-zero.css: -------------------------------------------------------------------------------- 1 | .o { outline: 1px none red } 2 | .o-none { outline: none } 3 | .o-none-red { outline: none red } 4 | .o-red-none { outline: red none } 5 | .o-reverse { outline: none 1px red } 6 | 7 | .b { border: 1px none red } 8 | .b-none { border: none } 9 | .b-none-red { border: none red } 10 | .b-red-none { border: red none } 11 | .b-reverse { border: none 1px red } 12 | -------------------------------------------------------------------------------- /test/fixture/compress/important2.css: -------------------------------------------------------------------------------- 1 | a { color: #111 !important; } 2 | b { color: #111; } 3 | 4 | c { color: #222; } 5 | d { color: #222 !important; } 6 | 7 | e { color: #333 !ie; } 8 | f { color: #333; } 9 | 10 | g { color: #444; } 11 | h { color: #444 !ie; } 12 | 13 | i { color: #555 !important; } 14 | j { color: #555 !ie; } 15 | 16 | k { color: #666 !ie; } 17 | l { color: #666 !important; } 18 | -------------------------------------------------------------------------------- /test/fixture/usage/tags-1.min.css: -------------------------------------------------------------------------------- 1 | div{p:1}span{p:2}div.class{p:4}div.class>span{p:7}.class{p:8}#id{p:9}.div span{p:10}:not(div){p:11}:not(remove){p:12}*{p:13}.class2{p:14}:matches(div){matches:1}:matches(span){matches:3}:has(>div){has:1}:has(span){has:3}:nth-child(2n of div){nth:1}:nth-child(2n of span){nth:3}:has(:matches(div)),:has(span),div{complex:1}:has(:matches(:not(a))),:has(:not(:matches(a))){complex:2} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/_nested-queries.min.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | z-index: 1; 3 | } 4 | 5 | @supports (display: auto) { 6 | .foo { 7 | z-index: 2; 8 | } 9 | } 10 | 11 | @media (min-width: 1024px) { 12 | .foo { 13 | z-index: 3; 14 | } 15 | @supports (display: auto) { 16 | .foo { 17 | z-index: 4; 18 | } 19 | } 20 | .bar { 21 | z-index: 5; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/226-1.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | deg: 0deg 5.5deg 10deg; 3 | grad: 0grad 5.5grad 10grad; 4 | rad: 0rad 5.5rad 10rad; 5 | turn: 0turn 5.5turn 10turn; 6 | s: 0s 5.5s 10s; 7 | ms: 0ms 5.5ms 10ms; 8 | Hz: 0Hz 5.5Hz 10Hz; 9 | kHz: 0kHz 5.5kHz 10kHz; 10 | dpi: 0dpi 5.5dpi 10dpi; 11 | dpcm: 0dpcm 5.5dpcm 10dpcm; 12 | dppx: 0dppx 5.5dppx 10dppx; 13 | px: 0px 5.5px 10px; 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/226-2.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | deg: 0deg 5.5deg 10deg; 3 | grad: 0grad 5.5grad 10grad; 4 | rad: 0rad 5.5rad 10rad; 5 | turn: 0turn 5.5turn 10turn; 6 | s: 0s 5.5s 10s; 7 | ms: 0ms 5.5ms 10ms; 8 | hz: 0hz 5.5hz 10hz; 9 | khz: 0khz 5.5khz 10khz; 10 | dpi: 0dpi 5.5dpi 10dpi; 11 | dpcm: 0dpcm 5.5dpcm 10dpcm; 12 | dppx: 0dppx 5.5dppx 10dppx; 13 | px: 0px 5.5px 10px; 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/226-3.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | deg: 0DEG 5.5DEG 10DEG; 3 | grad: 0GRAD 5.5GRAD 10GRAD; 4 | rad: 0RAD 5.5RAD 10RAD; 5 | turn: 0TURN 5.5TURN 10TURN; 6 | s: 0S 5.5S 10S; 7 | ms: 0MS 5.5MS 10MS; 8 | hz: 0HZ 5.5HZ 10HZ; 9 | khz: 0KHZ 5.5KHZ 10KHZ; 10 | dpi: 0DPI 5.5DPI 10DPI; 11 | dpcm: 0DPCM 5.5DPCM 10DPCM; 12 | dppx: 0DPPX 5.5DPPX 10DPPX; 13 | px: 0PX 5.5PX 10PX; 14 | } 15 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-7.css: -------------------------------------------------------------------------------- 1 | color { 2 | a0 : #000000; 3 | a1 : #111111; 4 | a2 : #222222; 5 | a3 : #333333; 6 | a4 : #444444; 7 | a5 : #555555; 8 | a6 : #666666; 9 | a7 : #777777; 10 | a8 : #888888; 11 | a9 : #999999; 12 | a10 : #aaaaaa; 13 | a11 : #bbbbbb; 14 | a12 : #cccccc; 15 | a13 : #dddddd; 16 | a14 : #eeeeee; 17 | a15 : #ffffff; 18 | } -------------------------------------------------------------------------------- /test/fixture/usage/scopes-2.css: -------------------------------------------------------------------------------- 1 | .scope1-a { color: red } 2 | .scope1-a:hover { color: blue } 3 | .scope1-a__mod { color: green } 4 | .something { color: black } 5 | .else { color: white } 6 | .scope2-a { color: red } 7 | .scope2-a:hover { color: blue } 8 | .scope2-a__mod { color: green } 9 | .foo { color: gray } 10 | .scope3-a { color: red } 11 | .scope3-a:hover { color: blue } 12 | .scope3-a__mod { color: green } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/other-at-rule.css: -------------------------------------------------------------------------------- 1 | /* test from https://github.com/hail2u/node-css-mqpacker */ 2 | @charset "UTF-8"; 3 | 4 | @import "import.css"; 5 | 6 | @font-face { 7 | font-family: F; 8 | src: local("F"); 9 | } 10 | 11 | @media (min-width: 99px) { 12 | .foo { 13 | z-index: 1; 14 | } 15 | } 16 | 17 | @media (min-width: 99px) { 18 | .bar { 19 | z-index: 2; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/fixture/compress/calc.css: -------------------------------------------------------------------------------- 1 | /* 2 | Whitespace is required on both sides of the + and - operators. 3 | The * and / operaters can be used without whitespace around them. 4 | 5 | http://www.w3.org/TR/css3-values/#calc-syntax 6 | */ 7 | 8 | a { 9 | width: calc(20px + 5%); 10 | height: calc((20px + 3em) - (20% - 5px)); 11 | margin: calc((20px * 3) + (20px / 4)); 12 | padding: calc(20px / 5 + 3 * 5%); 13 | } 14 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/286.min.css: -------------------------------------------------------------------------------- 1 | .test1,.test2{margin:0;padding:0}.test3{top:0;bottom:0;right:0;left:0;background-position:0;background-position-x:0;background-position-y:0;border:0;border-width:0;border-image-width:0;border-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0;border-top-right-radius:0}.exclude{width:0%;min-width:0%;max-width:0%;height:0%;min-height:0%;max-height:0%} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/13.css: -------------------------------------------------------------------------------- 1 | .a, .bb, .cc, .dd, .e { 2 | -webkit-a: 1; 3 | a: 1; 4 | } 5 | 6 | .a { 7 | b: 0; 8 | -webkit-c: 1; 9 | c: 1; 10 | } 11 | 12 | .bb { 13 | b: 1; 14 | -webkit-c: 2; 15 | c: 2; 16 | } 17 | 18 | .cc { 19 | -webkit-c: 3; 20 | c: 3; 21 | } 22 | 23 | .dd { 24 | -webkit-c: 4; 25 | c: 4; 26 | } 27 | 28 | .e { 29 | -webkit-c: none; 30 | c: none; 31 | } 32 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.equal/14.css: -------------------------------------------------------------------------------- 1 | ea, ebb, ecc, edd, ee { 2 | -webkit-a: 1; 3 | a: 1; 4 | } 5 | 6 | ea { 7 | b: 0; 8 | -webkit-c: 1; 9 | c: 1; 10 | } 11 | 12 | ebb { 13 | b: 1; 14 | -webkit-c: 2; 15 | c: 2; 16 | } 17 | 18 | ecc { 19 | -webkit-c: 3; 20 | c: 3; 21 | } 22 | 23 | edd { 24 | -webkit-c: 4; 25 | c: 4; 26 | } 27 | 28 | ee { 29 | -webkit-c: none; 30 | c: none; 31 | } 32 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/issue-291.css: -------------------------------------------------------------------------------- 1 | /* 2 | Issue #291 rules with case insensitive attribute selector should to be mixed 3 | with others because lack of support 4 | http://caniuse.com/#feat=css-case-insensitive 5 | */ 6 | 7 | .foo[x i], .bar { 8 | color: red; 9 | } 10 | .bar[a=b] { 11 | color: red; 12 | } 13 | span[a=b i] { 14 | color: red; 15 | } 16 | [b i] { 17 | color: red; 18 | } 19 | -------------------------------------------------------------------------------- /test/fixture/compress/disjoin/1.min.css: -------------------------------------------------------------------------------- 1 | a{color:red;width:200px}foo{border:0}b,foo{color:#00f;width:200px;height:50px}@media (min-width:400px){a{color:red;width:200px}foo{border:0}b,foo{color:#00f;width:200px;height:50px}} 2 | /*! 3 | better solution 4 | a,b,foo{color:red;width:200px}foo{border:0}b,foo{color:#00f;height:50px}@media (min-width:400px){a,b,foo{color:red;width:200px}foo{border:0}b,foo{color:#00f;height:50px}} 5 | */ 6 | -------------------------------------------------------------------------------- /test/fixture/compress/display.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue #259 don't override values with different browser support 3 | */ 4 | 5 | .test { 6 | display: inline-block; 7 | display: -webkit-box; 8 | display: -moz-box; 9 | display: -webkit-flex; 10 | display: -moz-flex; 11 | display: -ms-flexbox; 12 | display: inline-block; 13 | display: table-cell; 14 | display: grid; 15 | display: flex; 16 | } 17 | -------------------------------------------------------------------------------- /test/fixture/compress/initial.font.css: -------------------------------------------------------------------------------- 1 | .a { 2 | font: normal normal 600 9px/normal Charcoal; 3 | } 4 | .b { 5 | font: normal normal 500 medium/normal Charcoal; 6 | } 7 | .c { 8 | font: normal normal 400 medium Charcoal; 9 | } 10 | .d { 11 | font: normal normal 500 medium/10px Charcoal; 12 | } 13 | .e { 14 | font: normal; 15 | } 16 | .f { 17 | font: bold; 18 | } 19 | .g { 20 | font: medium; 21 | } 22 | -------------------------------------------------------------------------------- /test/fixture/compress/restructure.merge/11.css: -------------------------------------------------------------------------------- 1 | /* 2 | should not skip at-rules that contains rules with same specificity 3 | */ 4 | 5 | .a { 6 | color: red; 7 | } 8 | 9 | @media foo { 10 | .b { 11 | color: blue; 12 | } 13 | } 14 | 15 | .c { 16 | color: red; 17 | } 18 | 19 | @supports (a: 1) { 20 | .d { 21 | color: blue; 22 | } 23 | } 24 | 25 | .e { 26 | color: red; 27 | } 28 | -------------------------------------------------------------------------------- /test/fixture/usage/atrule-1.css: -------------------------------------------------------------------------------- 1 | /* 2 | should remove empty at-rules after filter 3 | */ 4 | 5 | @media a { 6 | .remove, .foo { p: 1 } 7 | .bar { p: 2 } 8 | .remove { p: 3 } 9 | } 10 | 11 | @media b { 12 | .remove { p: 4 } 13 | } 14 | 15 | @supports (a: 1) { 16 | .remove, .foo { p: 1 } 17 | .bar { p: 2 } 18 | .remove { p: 3 } 19 | } 20 | 21 | @supports (b: 2) { 22 | .remove { p: 4 } 23 | } 24 | -------------------------------------------------------------------------------- /test/fixture/compress/color/rgba-0.min.css: -------------------------------------------------------------------------------- 1 | a,b,c{color:transparent}d{background:-webkit-gradient(linear,top,left,from(rgba(1,2,3,0)),color-stop(rgba(1,2,4,0)),to(rgba(1,2,5,0)));background:-webkit-linear-gradient(top,rgba(1,2,3,0),rgba(1,2,5,0))}e{background:-webkit-gradient(linear,top,left,from(transparent),color-stop(transparent),to(transparent));background:-webkit-linear-gradient(top,transparent,transparent);background:x(transparent)} 2 | -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/text-align.css: -------------------------------------------------------------------------------- 1 | /* 2 | issue 281 start/end/match-parent/justify-all values has different browser support 3 | */ 4 | 5 | .test { 6 | text-align: left; 7 | text-align: right; 8 | text-align: center; 9 | text-align: justify; 10 | text-align: start; 11 | text-align: end; 12 | text-align: match-parent; 13 | text-align: justify-all; 14 | text-align: start; 15 | } 16 | -------------------------------------------------------------------------------- /test/fixture/compress/url.css: -------------------------------------------------------------------------------- 1 | .should-unquote { 2 | a: url('a\\b\\c'); 3 | b: url("a\\b\\c"); 4 | c: url('a/b/c'); 5 | d: url('data:image/png;base64,...'); 6 | e: url('!?#-s93'); 7 | f: url('\30 aa-asd\-'); 8 | g: url('asd\ 9 | sdf'); 10 | h: url('a\"b'); 11 | } 12 | .should-not-unquote { 13 | a: url('a b'); 14 | b: url('a"b'); 15 | c: url("a'b"); 16 | d: url('asd\ 17 | sdf'); 18 | } 19 | -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/last-comment.css: -------------------------------------------------------------------------------- 1 | /* test from https://github.com/hail2u/node-css-mqpacker */ 2 | /* compress.options{ "forceMediaMerge": true } */ 3 | .foo { 4 | z-index: 1; 5 | } 6 | 7 | @media (min-width: 999px) { 8 | .foo { 9 | z-index: 3; 10 | } 11 | } 12 | 13 | .bar { 14 | z-index: 2; 15 | } 16 | 17 | @media (min-width: 999px) { 18 | .bar { 19 | z-index: 4; 20 | } 21 | } 22 | 23 | /* Comment */ 24 | -------------------------------------------------------------------------------- /test/fixture/compress/bad-color.css: -------------------------------------------------------------------------------- 1 | .a1 { color: rgb(1, 2); } 2 | .a2 { color: rgb(1, 2, bad); } 3 | .a3 { color: rgb(1, 2 2, 3); } 4 | .a4 { color: rgb(1, 2%, 3); } 5 | .a5 { color: rgb(1, +2+, 3); } 6 | .a6 { color: rgb(1, 2, 3, 4); } 7 | .a7 { color: rgba(1, 2, 3); } 8 | .a8 { color: rgba(1, 2, 3, 4%); } 9 | .a9 { color: rgba(1, 2, 3, 4, 5); } 10 | .a0 { color: hsl(1%, 2%, 3%); } 11 | .b1 { color: hsl(1, 2, 3); } 12 | .b2 { color: rgb(1, 2%3, 3); } 13 | -------------------------------------------------------------------------------- /test/fixture/compress/css21/part4.3.6-8.css: -------------------------------------------------------------------------------- 1 | a { 2 | color0: rgb(0, 0, 0); 3 | color1: rgb(0, 0, 255); 4 | color2: rgb(0, 255, 0); 5 | color3: rgb(255, 0, 0); 6 | color4: rgb(0, 255, 255); 7 | color5: rgb(255, 255, 0); 8 | color6: rgb(255, 0, 255); 9 | color7: rgb(255, 255, 255); 10 | color8: rgb(128, 128, 128); 11 | color9: rgb(192, 192, 192); 12 | color10: rgb(1, 1, 1); 13 | color11: rgb(256, 256, 256); 14 | } -------------------------------------------------------------------------------- /test/fixture/compress/property-merge/2.css: -------------------------------------------------------------------------------- 1 | /* 2 | issues #140, #161 3 | shouldn't merge properties with new units with various support 4 | */ 5 | 6 | a { 7 | padding: 20px; 8 | padding: 1.25rem; 9 | border-radius: 20px; 10 | border-radius: 1.25rem; 11 | } 12 | b { 13 | width: 10px; 14 | width: 10vh; 15 | width: 10vmax; 16 | height: 10px; 17 | height: 10vw; 18 | height: 10vmin; 19 | height: 10vm; 20 | } 21 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/50-2.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'pictos'; 3 | src: url('../fonts/pictos-web.eot'); /* IE9 Compat Modes */ 4 | src: local('☺'), url(data:application/x-font-woff;charset=utf-8;base64,longbase64encodedstring) format('woff'), url(data:font/truetype;charset=utf-8;base64,otherlongbase64encodedstring) format('truetype'), url('pictos-web.svg#webfontIyfZbseF') format('svg'); 5 | font-weight: normal; 6 | font-style: normal; 7 | } -------------------------------------------------------------------------------- /test/fixture/compress/atrules/media-merge/keep-query-order.css: -------------------------------------------------------------------------------- 1 | /* test from https://github.com/hail2u/node-css-mqpacker */ 2 | /* compress.options{ "forceMediaMerge": true } */ 3 | .foo { 4 | z-index: 0; 5 | } 6 | 7 | @media (min-width: 99px) { 8 | .foo { 9 | z-index: 1; 10 | } 11 | } 12 | 13 | @media (min-width: 999px) { 14 | .foo { 15 | z-index: 3; 16 | } 17 | } 18 | 19 | @media (min-width: 99px) { 20 | .bar { 21 | z-index: 2; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/fixture/compress/issue/153.css: -------------------------------------------------------------------------------- 1 | a { 2 | box-shadow: rgb(255, 255, 255) 0px 0px 0px !important; 3 | } 4 | 5 | b { 6 | box-shadow: rgba(255, 255, 255, 0.5) 0px 0px 0px !important; 7 | } 8 | 9 | c { 10 | background: rgb(255, 255, 255) no-repeat; 11 | } 12 | 13 | d { 14 | background: linear-gradient(bottom, rgb(209,209,209) 10%, rgb(250,250,250) 55%); 15 | } 16 | 17 | e { 18 | background-image: linear-gradient(black, rgb(148, 34, 34) 52%, white); 19 | } 20 | -------------------------------------------------------------------------------- /lib/clean/Operator.js: -------------------------------------------------------------------------------- 1 | // remove white spaces around operators when safe 2 | module.exports = function cleanWhitespace(node, item, list) { 3 | if (node.value === '+' || node.value === '-') { 4 | return; 5 | } 6 | 7 | if (item.prev !== null && item.prev.data.type === 'WhiteSpace') { 8 | list.remove(item.prev); 9 | } 10 | 11 | if (item.next !== null && item.next.data.type === 'WhiteSpace') { 12 | list.remove(item.next); 13 | } 14 | }; 15 | --------------------------------------------------------------------------------