autoprefixer 9.4.10 → 9.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Change Log
2
2
  This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
+ ## 9.6.1
5
+ * Fix `-webkit-line-clamp` truncating multi-line text support.
6
+
7
+ ## 9.6 “Nunc id vides, nunc ne vides”
8
+ * Show warning about Browserslist config on `browser` option.
9
+ * Add warning-less `overrideBrowserslist` option.
10
+ * Add `text-orientation` support.
11
+ * Add `min-resolution: 2x` alias support.
12
+ * Add `.github/CONTRIBUTING.md` (by Juan Martin Marco).
13
+
14
+ ## 9.5.1
15
+ * Fix `backdrop-filter` for Edge (by Oleh Aloshkin).
16
+ * Fix `min-resolution` media query support in Firefox < 16.
17
+
18
+ ## 9.5 “Draco dormiens nunquam titillandus”
19
+ * Add `mask-composite` support (by Semen Levenson).
20
+
4
21
  ## 9.4.10
5
22
  * Add warning for named Grid rows.
6
23
 
package/README.md CHANGED
@@ -14,6 +14,15 @@ entirely):
14
14
  ::placeholder {
15
15
  color: gray;
16
16
  }
17
+
18
+ .image {
19
+ background-image: url(image@1x.png);
20
+ }
21
+ @media (min-resolution: 2dppx) {
22
+ .image {
23
+ background-image: url(image@2x.png);
24
+ }
25
+ }
17
26
  ```
18
27
 
19
28
  Autoprefixer will use the data based on current browser popularity and property
@@ -24,6 +33,9 @@ of Autoprefixer.
24
33
  ::-webkit-input-placeholder {
25
34
  color: gray;
26
35
  }
36
+ ::-moz-placeholder {
37
+ color: gray;
38
+ }
27
39
  :-ms-input-placeholder {
28
40
  color: gray;
29
41
  }
@@ -33,6 +45,17 @@ of Autoprefixer.
33
45
  ::placeholder {
34
46
  color: gray;
35
47
  }
48
+
49
+ .image {
50
+ background-image: url(image@1x.png);
51
+ }
52
+ @media (-webkit-min-device-pixel-ratio: 2),
53
+ (-o-min-device-pixel-ratio: 2/1),
54
+ (min-resolution: 2dppx) {
55
+ .image {
56
+ background-image: url(image@2x.png);
57
+ }
58
+ }
36
59
  ```
37
60
 
38
61
  Twitter account for news and releases: [@autoprefixer].
@@ -55,8 +78,6 @@ Twitter account for news and releases: [@autoprefixer].
55
78
  - [Browsers](#browsers)
56
79
  - [FAQ](#faq)
57
80
  - [Does Autoprefixer polyfill Grid Layout for IE?](#does-autoprefixer-polyfill-grid-layout-for-ie)
58
- - [No prefixes in production](#no-prefixes-in-production)
59
- - [What is the unprefixed version of `-webkit-min-device-pixel-ratio`?](#what-is-the-unprefixed-version-of--webkit-min-device-pixel-ratio)
60
81
  - [Does it add polyfills?](#does-it-add-polyfills)
61
82
  - [Why doesn’t Autoprefixer add prefixes to `border-radius`?](#why-doesnt-autoprefixer-add-prefixes-to-border-radius)
62
83
  - [Why does Autoprefixer use unprefixed properties in `@-webkit-keyframes`?](#why-does-autoprefixer-use-unprefixed-properties-in--webkit-keyframes)
@@ -123,25 +144,25 @@ to use Autoprefixer is by using `grid-template` or `grid-template-areas`.
123
144
 
124
145
  ```css
125
146
  .page {
126
- display: grid;
127
- grid-gap: 33px;
128
- grid-template:
129
- "head head head" 1fr
130
- "nav main main" minmax(100px, 1fr)
131
- "nav foot foot" 2fr /
132
- 1fr 100px 1fr;
147
+ display: grid;
148
+ grid-gap: 33px;
149
+ grid-template:
150
+ "head head head" 1fr
151
+ "nav main main" minmax(100px, 1fr)
152
+ "nav foot foot" 2fr /
153
+ 1fr 100px 1fr;
133
154
  }
134
155
  .page__head {
135
- grid-area: head;
156
+ grid-area: head;
136
157
  }
137
158
  .page__nav {
138
- grid-area: nav;
159
+ grid-area: nav;
139
160
  }
140
161
  .page__main {
141
- grid-area: main;
162
+ grid-area: main;
142
163
  }
143
164
  .page__footer {
144
- grid-area: foot;
165
+ grid-area: foot;
145
166
  }
146
167
  ```
147
168
 
@@ -157,44 +178,6 @@ See also:
157
178
  [`postcss-gap-properties`]: https://github.com/jonathantneal/postcss-gap-properties
158
179
  [`postcss-grid-kiss`]: https://github.com/sylvainpolletvillard/postcss-grid-kiss
159
180
 
160
- ### No prefixes in production
161
-
162
- Many other tools contain Autoprefixer. For example, webpack uses Autoprefixer
163
- to minify CSS by cleaning unnecessary prefixes.
164
-
165
- If you pass your browsers to Autoprefixer using its `browsers` option, the other
166
- tools will use their own config, leading webpack to remove the prefixes that
167
- the first Autoprefixer added.
168
-
169
- To avoid this, ensure you use either the [browserslist config file] or
170
- `browsers` key in your `package.json`, so that all tools (Autoprefixer,
171
- cssnano, doiuse, cssnext, etc) use the same browsers list.
172
-
173
- [browserslist config file]: https://github.com/ai/browserslist#config-file
174
-
175
-
176
- ### What is the unprefixed version of `-webkit-min-device-pixel-ratio`?
177
-
178
- ```css
179
- @media (min-resolution: 2dppx) {
180
- .image {
181
- background-image: url(image@2x.png);
182
- }
183
- }
184
- ```
185
-
186
- Will be compiled to:
187
-
188
- ```css
189
- @media (-webkit-min-device-pixel-ratio: 2),
190
- (-o-min-device-pixel-ratio: 2/1),
191
- (min-resolution: 2dppx) {
192
- .image {
193
- background-image: url(image@2x.png);
194
- }
195
- }
196
- ```
197
-
198
181
 
199
182
  ### Does it add polyfills?
200
183
 
@@ -247,8 +230,7 @@ Use [postcss-unprefix] before Autoprefixer.
247
230
  ### Does Autoprefixer add `-epub-` prefix?
248
231
 
249
232
  No, Autoprefixer works only with browsers prefixes from Can I Use.
250
- But you can use [postcss-epub]
251
- for prefixing ePub3 properties.
233
+ But you can use [postcss-epub] for prefixing ePub3 properties.
252
234
 
253
235
  [postcss-epub]: https://github.com/Rycochet/postcss-epub
254
236
 
@@ -269,17 +251,17 @@ future-proof. You can use [postcss-font-family-system-ui] to transform
269
251
  In Gulp you can use [gulp-postcss] with `autoprefixer` npm package.
270
252
 
271
253
  ```js
272
- gulp.task('autoprefixer', function () {
273
- var postcss = require('gulp-postcss');
274
- var sourcemaps = require('gulp-sourcemaps');
275
- var autoprefixer = require('autoprefixer');
276
-
277
- return gulp.src('./src/*.css')
278
- .pipe(sourcemaps.init())
279
- .pipe(postcss([ autoprefixer() ]))
280
- .pipe(sourcemaps.write('.'))
281
- .pipe(gulp.dest('./dest'));
282
- });
254
+ gulp.task('autoprefixer', () => {
255
+ const autoprefixer = require('autoprefixer')
256
+ const sourcemaps = require('gulp-sourcemaps')
257
+ const postcss = require('gulp-postcss')
258
+
259
+ return gulp.src('./src/*.css')
260
+ .pipe(sourcemaps.init())
261
+ .pipe(postcss([ autoprefixer() ]))
262
+ .pipe(sourcemaps.write('.'))
263
+ .pipe(gulp.dest('./dest'))
264
+ })
283
265
  ```
284
266
 
285
267
  With `gulp-postcss` you also can combine Autoprefixer
@@ -296,14 +278,14 @@ and [other PostCSS plugins].
296
278
 
297
279
  ```js
298
280
  module.exports = {
299
- module: {
300
- rules: [
301
- {
302
- test: /\.css$/,
303
- use: ["style-loader", "css-loader", "postcss-loader"]
304
- }
305
- ]
306
- }
281
+ module: {
282
+ rules: [
283
+ {
284
+ test: /\.css$/,
285
+ use: ["style-loader", "css-loader", "postcss-loader"]
286
+ }
287
+ ]
288
+ }
307
289
  }
308
290
  ```
309
291
 
@@ -414,15 +396,15 @@ You can use Autoprefixer with [PostCSS] in your Node.js application
414
396
  or if you want to develop an Autoprefixer plugin for a new environment.
415
397
 
416
398
  ```js
417
- var autoprefixer = require('autoprefixer');
418
- var postcss = require('postcss');
419
-
420
- postcss([ autoprefixer ]).process(css).then(function (result) {
421
- result.warnings().forEach(function (warn) {
422
- console.warn(warn.toString());
423
- });
424
- console.log(result.css);
425
- });
399
+ const autoprefixer = require('autoprefixer')
400
+ const postcss = require('postcss')
401
+
402
+ postcss([ autoprefixer ]).process(css).then(result => {
403
+ result.warnings().forEach(warn => {
404
+ console.warn(warn.toString())
405
+ })
406
+ console.log(result.css)
407
+ })
426
408
  ```
427
409
 
428
410
  There is also a [standalone build] for the browser or for a non-Node.js runtime.
@@ -467,9 +449,9 @@ problems in your CSS:
467
449
  You can get warnings from `result.warnings()`:
468
450
 
469
451
  ```js
470
- result.warnings().forEach(function (warn) {
471
- console.warn(warn.toString());
472
- });
452
+ result.warnings().forEach(warn => {
453
+ console.warn(warn.toString())
454
+ })
473
455
  ```
474
456
 
475
457
  Every Autoprefixer runner should display these warnings.
@@ -487,8 +469,8 @@ after the unprefixed one.
487
469
 
488
470
  ```css
489
471
  a {
490
- transform: scale(0.5);
491
- -moz-transform: scale(0.6);
472
+ transform: scale(0.5);
473
+ -moz-transform: scale(0.6);
492
474
  }
493
475
  ```
494
476
 
@@ -512,7 +494,7 @@ You can use these plugin options to control some of Autoprefixer’s features.
512
494
  You should set them inside the plugin like so:
513
495
 
514
496
  ```js
515
- autoprefixer({ grid: "autoplace" });
497
+ autoprefixer({ grid: 'autoplace' })
516
498
  ```
517
499
 
518
500
 
@@ -523,18 +505,18 @@ you can use control comments to disable Autoprefixer.
523
505
 
524
506
  ```css
525
507
  .a {
526
- transition: 1s; /* will be prefixed */
508
+ transition: 1s; /* will be prefixed */
527
509
  }
528
510
 
529
511
  .b {
530
- /* autoprefixer: off */
531
- transition: 1s; /* will not be prefixed */
512
+ /* autoprefixer: off */
513
+ transition: 1s; /* will not be prefixed */
532
514
  }
533
515
 
534
516
  .c {
535
- /* autoprefixer: ignore next */
536
- transition: 1s; /* will not be prefixed */
537
- mask: url(image.png); /* will be prefixed */
517
+ /* autoprefixer: ignore next */
518
+ transition: 1s; /* will not be prefixed */
519
+ mask: url(image.png); /* will be prefixed */
538
520
  }
539
521
  ```
540
522
 
@@ -546,20 +528,20 @@ There are three types of control comments:
546
528
  or next rule selector or at-rule parameters (but not rule/at‑rule body).
547
529
  * `/* autoprefixer grid: (autoplace|no-autoplace|off) */`: control how Autoprefixer handles
548
530
  grid translations for the whole block:
549
- * `autoplace`: enable grid translations with autoplacement support.
550
- * `no-autoplace`: enable grid translations with autoplacement support *disabled*.
551
- (alias for deprecated value `on`)
552
- * `off`: disable all grid translations.
531
+ * `autoplace`: enable grid translations with autoplacement support.
532
+ * `no-autoplace`: enable grid translations with autoplacement
533
+ support *disabled* (alias for deprecated value `on`).
534
+ * `off`: disable all grid translations.
553
535
 
554
536
  You can also use comments recursively:
555
537
 
556
538
  ```css
557
539
  /* autoprefixer: off */
558
540
  @supports (transition: all) {
559
- /* autoprefixer: on */
560
- a {
561
- /* autoprefixer: off */
562
- }
541
+ /* autoprefixer: on */
542
+ a {
543
+ /* autoprefixer: off */
544
+ }
563
545
  }
564
546
  ```
565
547
 
@@ -570,10 +552,10 @@ block twice:
570
552
  /* How not to use block level control comments */
571
553
 
572
554
  .do-not-do-this {
573
- /* autoprefixer: off */
574
- transition: 1s;
575
- /* autoprefixer: on */
576
- transform: rotate(20deg);
555
+ /* autoprefixer: off */
556
+ transition: 1s;
557
+ /* autoprefixer: on */
558
+ transform: rotate(20deg);
577
559
  }
578
560
  ```
579
561
 
@@ -613,13 +595,13 @@ Available options are:
613
595
  (alias for the deprecated `true` value)
614
596
  * `stats` (object): custom [usage statistics] for `> 10% in my stats`
615
597
  browsers query.
616
- * `browsers` (array): list of queries for target browsers. Try to not use it.
617
-  The best practice is to use `.browserslistrc` config
598
+ * `overrideBrowserslist` (array): list of queries for target browsers.
599
+ Try to not use it. The best practice is to use `.browserslistrc` config
618
600
  or `browserslist` key in `package.json` to share target browsers
619
601
  with Babel, ESLint and Stylelint. See [Browserslist docs]
620
602
  for available queries and default value.
621
603
  * `ignoreUnknownVersions` (boolean): do not raise error on unknown browser
622
- version in Browserslist config or `browsers` option. Default is `false`.
604
+ version in Browserslist config. Default is `false`.
623
605
 
624
606
  Plugin object has `info()` method for debugging purpose.
625
607
 
@@ -643,10 +625,10 @@ Autoprefixer supports autoplacement by using `nth-child` CSS selectors. It creat
643
625
  /* autoprefixer grid: autoplace */
644
626
 
645
627
  .autoplacement-example {
646
- display: grid;
647
- grid-template-columns: 1fr 1fr;
648
- grid-template-rows: auto auto;
649
- grid-gap: 20px;
628
+ display: grid;
629
+ grid-template-columns: 1fr 1fr;
630
+ grid-template-rows: auto auto;
631
+ grid-gap: 20px;
650
632
  }
651
633
  ```
652
634
 
@@ -656,33 +638,33 @@ Autoprefixer supports autoplacement by using `nth-child` CSS selectors. It creat
656
638
  /* autoprefixer grid: autoplace */
657
639
 
658
640
  .autoplacement-example {
659
- display: -ms-grid;
660
- display: grid;
661
- -ms-grid-columns: 1fr 20px 1fr;
662
- grid-template-columns: 1fr 1fr;
663
- -ms-grid-rows: auto 20px auto;
664
- grid-template-rows: auto auto;
665
- grid-gap: 20px;
641
+ display: -ms-grid;
642
+ display: grid;
643
+ -ms-grid-columns: 1fr 20px 1fr;
644
+ grid-template-columns: 1fr 1fr;
645
+ -ms-grid-rows: auto 20px auto;
646
+ grid-template-rows: auto auto;
647
+ grid-gap: 20px;
666
648
  }
667
649
 
668
650
  .autoplacement-example > *:nth-child(1) {
669
- -ms-grid-row: 1;
670
- -ms-grid-column: 1;
651
+ -ms-grid-row: 1;
652
+ -ms-grid-column: 1;
671
653
  }
672
654
 
673
655
  .autoplacement-example > *:nth-child(2) {
674
- -ms-grid-row: 1;
675
- -ms-grid-column: 3;
656
+ -ms-grid-row: 1;
657
+ -ms-grid-column: 3;
676
658
  }
677
659
 
678
660
  .autoplacement-example > *:nth-child(3) {
679
- -ms-grid-row: 3;
680
- -ms-grid-column: 1;
661
+ -ms-grid-row: 3;
662
+ -ms-grid-column: 1;
681
663
  }
682
664
 
683
665
  .autoplacement-example > *:nth-child(4) {
684
- -ms-grid-row: 3;
685
- -ms-grid-column: 3;
666
+ -ms-grid-row: 3;
667
+ -ms-grid-column: 3;
686
668
  }
687
669
  ```
688
670
 
@@ -705,14 +687,14 @@ The following CSS will not work as expected with the autoplacement feature enabl
705
687
  /* Unsafe CSS when Autoplacement is enabled */
706
688
 
707
689
  .grid-cell {
708
- grid-column: 2;
709
- grid-row: 2;
690
+ grid-column: 2;
691
+ grid-row: 2;
710
692
  }
711
693
 
712
694
  .grid {
713
- display: grid;
714
- grid-template-columns: repeat(3, 1fr);
715
- grid-template-rows: repeat(3, 1fr);
695
+ display: grid;
696
+ grid-template-columns: repeat(3, 1fr);
697
+ grid-template-rows: repeat(3, 1fr);
716
698
  }
717
699
  ```
718
700
 
@@ -722,14 +704,14 @@ Swapping the rules around will not fix the issue either:
722
704
  /* Also unsafe to use this CSS */
723
705
 
724
706
  .grid {
725
- display: grid;
726
- grid-template-columns: repeat(3, 1fr);
727
- grid-template-rows: repeat(3, 1fr);
707
+ display: grid;
708
+ grid-template-columns: repeat(3, 1fr);
709
+ grid-template-rows: repeat(3, 1fr);
728
710
  }
729
711
 
730
712
  .grid-cell {
731
- grid-column: 2;
732
- grid-row: 2;
713
+ grid-column: 2;
714
+ grid-row: 2;
733
715
  }
734
716
  ```
735
717
 
@@ -740,15 +722,15 @@ grid-declaration rule:
740
722
  /* Disable autoplacement to fix the issue */
741
723
 
742
724
  .grid {
743
- /* autoprefixer grid: no-autoplace */
744
- display: grid;
745
- grid-template-columns: repeat(3, 1fr);
746
- grid-template-rows: repeat(3, 1fr);
725
+ /* autoprefixer grid: no-autoplace */
726
+ display: grid;
727
+ grid-template-columns: repeat(3, 1fr);
728
+ grid-template-rows: repeat(3, 1fr);
747
729
  }
748
730
 
749
731
  .grid-cell {
750
- grid-column: 2;
751
- grid-row: 2;
732
+ grid-column: 2;
733
+ grid-row: 2;
752
734
  }
753
735
  ```
754
736
 
@@ -762,21 +744,21 @@ when needed. This method is far less likely to cause something on the site to br
762
744
 
763
745
  /* Old code will function the same way it always has */
764
746
  .old-grid {
765
- display: grid;
766
- grid-template-columns: repeat(3, 1fr);
767
- grid-template-rows: repeat(3, 1fr);
747
+ display: grid;
748
+ grid-template-columns: repeat(3, 1fr);
749
+ grid-template-rows: repeat(3, 1fr);
768
750
  }
769
751
  .old-grid-cell {
770
- grid-column: 2;
771
- grid-row: 2;
752
+ grid-column: 2;
753
+ grid-row: 2;
772
754
  }
773
755
 
774
756
  /* Enable autoplacement when you want to use it in new code */
775
757
  .new-autoplace-friendly-grid {
776
- /* autoprefixer grid: autoplace */
777
- display: grid;
778
- grid-template-columns: repeat(3, 1fr);
779
- grid-template-rows: repeat(3, auto);
758
+ /* autoprefixer grid: autoplace */
759
+ display: grid;
760
+ grid-template-columns: repeat(3, 1fr);
761
+ grid-template-rows: repeat(3, auto);
780
762
  }
781
763
  ```
782
764
 
@@ -795,14 +777,14 @@ so that Autoprefixer knows how many `nth-child` selectors to generate.
795
777
 
796
778
  ```css
797
779
  .not-allowed {
798
- display: grid;
799
- grid-template-columns: repeat(3, 1fr);
780
+ display: grid;
781
+ grid-template-columns: repeat(3, 1fr);
800
782
  }
801
783
 
802
784
  .is-allowed {
803
- display: grid;
804
- grid-template-columns: repeat(3, 1fr);
805
- grid-template-rows: repeat(10, auto);
785
+ display: grid;
786
+ grid-template-columns: repeat(3, 1fr);
787
+ grid-template-rows: repeat(10, auto);
806
788
  }
807
789
  ```
808
790
 
@@ -815,8 +797,8 @@ so unfortunately this little snippet will _never_ be IE friendly.
815
797
 
816
798
  ```css
817
799
  .grid {
818
- /* This will never be IE friendly */
819
- grid-template-columns: repeat(auto-fit, min-max(200px, 1fr))
800
+ /* This will never be IE friendly */
801
+ grid-template-columns: repeat(auto-fit, min-max(200px, 1fr))
820
802
  }
821
803
  ```
822
804
 
@@ -830,27 +812,23 @@ autoplacement grid is planned for a future release.
830
812
 
831
813
  ```css
832
814
  .autoplacement-grid {
833
- display: grid;
834
- grid-template-columns: repeat(3, 1fr);
835
- grid-template-rows: repeat(3, auto);
815
+ display: grid;
816
+ grid-template-columns: repeat(3, 1fr);
817
+ grid-template-rows: repeat(3, auto);
836
818
  }
837
819
 
838
- /*
839
- grid cells placed inside the explicit grid
840
- will break the layout in IE
841
- */
820
+ /* Grid cells placed inside the explicit grid
821
+ will break the layout in IE */
842
822
  .not-permitted-grid-cell {
843
- grid-column: 1;
844
- grid-row: 1;
823
+ grid-column: 1;
824
+ grid-row: 1;
845
825
  }
846
826
 
847
- /*
848
- grid cells placed outside the
849
- explicit grid will work in IE
850
- */
827
+ /* Grid cells placed outside the
828
+ explicit grid will work in IE */
851
829
  .permitted-grid-cell {
852
- grid-column: 1 / span 2;
853
- grid-row: 4;
830
+ grid-column: 1 / span 2;
831
+ grid-row: 4;
854
832
  }
855
833
  ```
856
834
 
@@ -859,25 +837,25 @@ If manual cell placement is required, we recommend using `grid-template` or
859
837
 
860
838
  ```css
861
839
  .page {
862
- display: grid;
863
- grid-gap: 30px;
864
- grid-template:
865
- "head head"
866
- "nav main" minmax(100px, 1fr)
867
- "foot foot" /
868
- 200px 1fr;
840
+ display: grid;
841
+ grid-gap: 30px;
842
+ grid-template:
843
+ "head head"
844
+ "nav main" minmax(100px, 1fr)
845
+ "foot foot" /
846
+ 200px 1fr;
869
847
  }
870
848
  .page__head {
871
- grid-area: head;
849
+ grid-area: head;
872
850
  }
873
851
  .page__nav {
874
- grid-area: nav;
852
+ grid-area: nav;
875
853
  }
876
854
  .page__main {
877
- grid-area: main;
855
+ grid-area: main;
878
856
  }
879
857
  .page__footer {
880
- grid-area: foot;
858
+ grid-area: foot;
881
859
  }
882
860
  ```
883
861
 
@@ -887,7 +865,7 @@ Let's say you have this HTML:
887
865
 
888
866
  ```html
889
867
  <div class="grid">
890
- <div class="grid-cell"></div>
868
+ <div class="grid-cell"></div>
891
869
  </div>
892
870
  ```
893
871
 
@@ -895,17 +873,17 @@ And you write this CSS:
895
873
 
896
874
  ```css
897
875
  .grid {
898
- display: grid;
899
- grid-template-columns: 1fr 1fr;
900
- grid-template-rows: auto;
876
+ display: grid;
877
+ grid-template-columns: 1fr 1fr;
878
+ grid-template-rows: auto;
901
879
  }
902
880
 
903
881
  .grid::before {
904
- content: 'before';
882
+ content: 'before';
905
883
  }
906
884
 
907
885
  .grid::after {
908
- content: 'after';
886
+ content: 'after';
909
887
  }
910
888
  ```
911
889
 
@@ -913,31 +891,31 @@ This will be the output:
913
891
 
914
892
  ```css
915
893
  .grid {
916
- display: -ms-grid;
917
- display: grid;
918
- -ms-grid-columns: 1fr 1fr;
919
- grid-template-columns: 1fr 1fr;
920
- -ms-grid-rows: auto;
921
- grid-template-rows: auto;
894
+ display: -ms-grid;
895
+ display: grid;
896
+ -ms-grid-columns: 1fr 1fr;
897
+ grid-template-columns: 1fr 1fr;
898
+ -ms-grid-rows: auto;
899
+ grid-template-rows: auto;
922
900
  }
923
901
 
924
902
  .grid > *:nth-child(1) {
925
- -ms-grid-row: 1;
926
- -ms-grid-column: 1;
903
+ -ms-grid-row: 1;
904
+ -ms-grid-column: 1;
927
905
  }
928
906
 
929
907
 
930
908
  .grid > *:nth-child(2) {
931
- -ms-grid-row: 1;
932
- -ms-grid-column: 2;
909
+ -ms-grid-row: 1;
910
+ -ms-grid-column: 2;
933
911
  }
934
912
 
935
913
  .grid::before {
936
- content: 'before';
914
+ content: 'before';
937
915
  }
938
916
 
939
917
  .grid::after {
940
- content: 'after';
918
+ content: 'after';
941
919
  }
942
920
  ```
943
921
 
@@ -957,47 +935,47 @@ If you wish to change the size of a `grid-gap`, you will need to redeclare the g
957
935
 
958
936
  ```css
959
937
  .grid {
960
- display: grid;
961
- grid-template-columns: 1fr 1fr;
962
- grid-template-rows: auto;
963
- grid-gap: 50px;
938
+ display: grid;
939
+ grid-template-columns: 1fr 1fr;
940
+ grid-template-rows: auto;
941
+ grid-gap: 50px;
964
942
  }
965
943
 
966
944
  /* This will *NOT* work in IE */
967
945
  @media (max-width: 600px) {
968
- .grid {
969
- grid-gap: 20px;
970
- }
946
+ .grid {
947
+ grid-gap: 20px;
948
+ }
971
949
  }
972
950
 
973
951
  /* This will *NOT* work in IE */
974
952
  .grid.small-gap {
975
- grid-gap: 20px;
953
+ grid-gap: 20px;
976
954
  }
977
955
  ```
978
956
 
979
957
  ```css
980
958
  .grid {
981
- display: grid;
982
- grid-template-columns: 1fr 1fr;
983
- grid-template-rows: auto;
984
- grid-gap: 50px;
959
+ display: grid;
960
+ grid-template-columns: 1fr 1fr;
961
+ grid-template-rows: auto;
962
+ grid-gap: 50px;
985
963
  }
986
964
 
987
965
  /* This *WILL* work in IE */
988
966
  @media (max-width: 600px) {
989
- .grid {
990
- grid-template-columns: 1fr 1fr;
991
- grid-template-rows: auto;
992
- grid-gap: 20px;
993
- }
967
+ .grid {
968
+ grid-template-columns: 1fr 1fr;
969
+ grid-template-rows: auto;
970
+ grid-gap: 20px;
971
+ }
994
972
  }
995
973
 
996
974
  /* This *WILL* work in IE */
997
975
  .grid.small-gap {
998
- grid-template-columns: 1fr 1fr;
999
- grid-template-rows: auto;
1000
- grid-gap: 20px;
976
+ grid-template-columns: 1fr 1fr;
977
+ grid-template-rows: auto;
978
+ grid-gap: 20px;
1001
979
  }
1002
980
  ```
1003
981
 
@@ -1039,6 +1017,13 @@ Properties:
1039
1017
  JS API is also available:
1040
1018
 
1041
1019
  ```js
1042
- var info = autoprefixer().info();
1043
- console.log(info);
1020
+ console.log(autoprefixer().info())
1044
1021
  ```
1022
+
1023
+
1024
+ ## Security Contact
1025
+
1026
+ To report a security vulnerability, please use the [Tidelift security contact].
1027
+ Tidelift will coordinate the fix and disclosure.
1028
+
1029
+ [Tidelift security contact]: https://tidelift.com/security
package/data/prefixes.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ /* eslint-disable import-helpers/order-imports */
3
4
  var unpack = require('caniuse-lite').feature;
4
5
 
5
6
  function browsersSort(a, b) {
@@ -196,7 +197,11 @@ f(require('caniuse-lite/data/features/css-filter-function'), function (browsers)
196
197
  });
197
198
  }); // Backdrop-filter
198
199
 
199
- f(require('caniuse-lite/data/features/css-backdrop-filter'), function (browsers) {
200
+ var backdrop = require('caniuse-lite/data/features/css-backdrop-filter');
201
+
202
+ f(backdrop, {
203
+ match: /y\sx|y\s#2/
204
+ }, function (browsers) {
200
205
  return prefix(['backdrop-filter'], {
201
206
  feature: 'css-backdrop-filter',
202
207
  browsers: browsers
@@ -498,7 +503,7 @@ f(require('caniuse-lite/data/features/css-deviceadaptation'), function (browsers
498
503
  var resolut = require('caniuse-lite/data/features/css-media-resolution');
499
504
 
500
505
  f(resolut, {
501
- match: /( x($| )|a #3)/
506
+ match: /( x($| )|a #2)/
502
507
  }, function (browsers) {
503
508
  return prefix(['@resolution'], {
504
509
  feature: 'css-media-resolution',
@@ -698,4 +703,11 @@ f(require('caniuse-lite/data/features/css-color-adjust'), function (browsers) {
698
703
  feature: 'css-color-adjust',
699
704
  browsers: browsers
700
705
  });
706
+ }); // text-orientation
707
+
708
+ f(require('caniuse-lite/data/features/css-text-orientation'), function (browsers) {
709
+ return prefix(['text-orientation'], {
710
+ feature: 'css-text-orientation',
711
+ browsers: browsers
712
+ });
701
713
  });
@@ -6,6 +6,8 @@ var postcss = require('postcss');
6
6
 
7
7
  var agents = require('caniuse-lite').agents;
8
8
 
9
+ var chalk = require('chalk');
10
+
9
11
  var Browsers = require('./browsers');
10
12
 
11
13
  var Prefixes = require('./prefixes');
@@ -14,6 +16,8 @@ var data = require('../data/prefixes');
14
16
 
15
17
  var info = require('./info');
16
18
 
19
+ var WARNING = '\n' + ' Replace Autoprefixer `browsers` option to Browserslist config.\n' + ' Use `browserslist` key in `package.json` or `.browserslistrc` file.\n' + '\n' + ' Using `browsers` option cause some error. Browserslist config \n' + ' can be used for Babel, Autoprefixer, postcss-normalize and other tools.\n' + '\n' + ' If you really need to use option, rename it to `overrideBrowserslist`.\n' + '\n' + ' Learn more at:\n' + ' https://github.com/browserslist/browserslist#readme\n' + ' https://twitter.com/browserslist\n' + '\n';
20
+
17
21
  function isPlainObject(obj) {
18
22
  return Object.prototype.toString.apply(obj) === '[object Object]';
19
23
  }
@@ -62,12 +66,24 @@ module.exports = postcss.plugin('autoprefixer', function () {
62
66
  }
63
67
 
64
68
  if (options.browser) {
65
- throw new Error('Change `browser` option to `browsers` in Autoprefixer');
69
+ throw new Error('Change `browser` option to `overrideBrowserslist` in Autoprefixer');
66
70
  } else if (options.browserslist) {
67
- throw new Error('Change `browserslist` option to `browsers` in Autoprefixer');
71
+ throw new Error('Change `browserslist` option to `overrideBrowserslist` in Autoprefixer');
68
72
  }
69
73
 
70
- if (options.browsers) {
74
+ if (options.overrideBrowserslist) {
75
+ reqs = options.overrideBrowserslist;
76
+ } else if (options.browsers) {
77
+ if (typeof console !== 'undefined' && console.warn) {
78
+ if (chalk && chalk.red) {
79
+ console.warn(chalk.red(WARNING.replace(/`[^`]+`/g, function (i) {
80
+ return chalk.yellow(i.slice(1, -1));
81
+ })));
82
+ } else {
83
+ console.warn(WARNING);
84
+ }
85
+ }
86
+
71
87
  reqs = options.browsers;
72
88
  }
73
89
 
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
4
+
5
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
6
+
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+
9
+ var Declaration = require('../declaration');
10
+
11
+ var utils = require('../utils');
12
+
13
+ var BackdropFilter =
14
+ /*#__PURE__*/
15
+ function (_Declaration) {
16
+ _inheritsLoose(BackdropFilter, _Declaration);
17
+
18
+ function BackdropFilter(name, prefixes, all) {
19
+ var _this;
20
+
21
+ _this = _Declaration.call(this, name, prefixes, all) || this;
22
+
23
+ if (_this.prefixes) {
24
+ _this.prefixes = utils.uniq(_this.prefixes.map(function (i) {
25
+ return i === '-ms-' ? '-webkit-' : i;
26
+ }));
27
+ }
28
+
29
+ return _this;
30
+ }
31
+
32
+ return BackdropFilter;
33
+ }(Declaration);
34
+
35
+ _defineProperty(BackdropFilter, "names", ['backdrop-filter']);
36
+
37
+ module.exports = BackdropFilter;
@@ -22,11 +22,7 @@ function (_Declaration) {
22
22
 
23
23
  if (_this.prefixes) {
24
24
  _this.prefixes = utils.uniq(_this.prefixes.map(function (i) {
25
- if (i === '-ms-') {
26
- return '-webkit-';
27
- }
28
-
29
- return i;
25
+ return i === '-ms-' ? '-webkit-' : i;
30
26
  }));
31
27
  }
32
28
 
@@ -47,13 +47,10 @@ _defineProperty(BorderRadius, "toMozilla", {});
47
47
 
48
48
  _defineProperty(BorderRadius, "toNormal", {});
49
49
 
50
- var _arr = ['top', 'bottom'];
51
-
52
- for (var _i = 0; _i < _arr.length; _i++) {
50
+ for (var _i = 0, _arr = ['top', 'bottom']; _i < _arr.length; _i++) {
53
51
  var ver = _arr[_i];
54
- var _arr2 = ['left', 'right'];
55
52
 
56
- for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
53
+ for (var _i2 = 0, _arr2 = ['left', 'right']; _i2 < _arr2.length; _i2++) {
57
54
  var hor = _arr2[_i2];
58
55
  var normal = "border-" + ver + "-" + hor + "-radius";
59
56
  var mozilla = "border-radius-" + ver + hor;
@@ -6,10 +6,10 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
6
6
 
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
 
9
- var Value = require('../value');
10
-
11
9
  var list = require('postcss').list;
12
10
 
11
+ var Value = require('../value');
12
+
13
13
  var CrossFade =
14
14
  /*#__PURE__*/
15
15
  function (_Value) {
package/lib/hacks/flex.js CHANGED
@@ -6,12 +6,12 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
6
6
 
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
 
9
+ var list = require('postcss').list;
10
+
9
11
  var flexSpec = require('./flex-spec');
10
12
 
11
13
  var Declaration = require('../declaration');
12
14
 
13
- var list = require('postcss').list;
14
-
15
15
  var Flex =
16
16
  /*#__PURE__*/
17
17
  function (_Declaration) {
@@ -8,16 +8,16 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
8
8
 
9
9
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
10
 
11
+ var parser = require('postcss-value-parser');
12
+
13
+ var range = require('normalize-range');
14
+
11
15
  var OldValue = require('../old-value');
12
16
 
13
17
  var Value = require('../value');
14
18
 
15
19
  var utils = require('../utils');
16
20
 
17
- var parser = require('postcss-value-parser');
18
-
19
- var range = require('normalize-range');
20
-
21
21
  var IS_DIRECTION = /top|left|right|bottom/gi;
22
22
 
23
23
  var Gradient =
@@ -398,8 +398,8 @@ function (_Value) {
398
398
  this.colorStops(params);
399
399
  node.nodes = [];
400
400
 
401
- for (var _i5 = 0; _i5 < params.length; _i5++) {
402
- var param = params[_i5];
401
+ for (var _i5 = 0, _params = params; _i5 < _params.length; _i5++) {
402
+ var param = _params[_i5];
403
403
  node.nodes = node.nodes.concat(param);
404
404
  }
405
405
 
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
4
+
5
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
6
+
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+
9
+ var Declaration = require('../declaration');
10
+
11
+ var MaskComposite =
12
+ /*#__PURE__*/
13
+ function (_Declaration) {
14
+ _inheritsLoose(MaskComposite, _Declaration);
15
+
16
+ function MaskComposite() {
17
+ return _Declaration.apply(this, arguments) || this;
18
+ }
19
+
20
+ var _proto = MaskComposite.prototype;
21
+
22
+ /**
23
+ * Prefix mask-composite for webkit
24
+ */
25
+ _proto.insert = function insert(decl, prefix, prefixes) {
26
+ var isCompositeProp = decl.prop === 'mask-composite';
27
+ var compositeValues;
28
+
29
+ if (isCompositeProp) {
30
+ compositeValues = decl.value.split(',');
31
+ } else {
32
+ compositeValues = decl.value.match(MaskComposite.regexp) || [];
33
+ }
34
+
35
+ compositeValues = compositeValues.map(function (el) {
36
+ return el.trim();
37
+ }).filter(function (el) {
38
+ return el;
39
+ });
40
+ var hasCompositeValues = compositeValues.length;
41
+ var compositeDecl;
42
+
43
+ if (hasCompositeValues) {
44
+ compositeDecl = this.clone(decl);
45
+ compositeDecl.value = compositeValues.map(function (value) {
46
+ return MaskComposite.oldValues[value] || value;
47
+ }).join(', ');
48
+
49
+ if (compositeValues.includes('intersect')) {
50
+ compositeDecl.value += ', xor';
51
+ }
52
+
53
+ compositeDecl.prop = prefix + 'mask-composite';
54
+ }
55
+
56
+ if (isCompositeProp) {
57
+ if (!hasCompositeValues) {
58
+ return undefined;
59
+ }
60
+
61
+ if (this.needCascade(decl)) {
62
+ compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
63
+ }
64
+
65
+ return decl.parent.insertBefore(decl, compositeDecl);
66
+ }
67
+
68
+ var cloned = this.clone(decl);
69
+ cloned.prop = prefix + cloned.prop;
70
+
71
+ if (hasCompositeValues) {
72
+ cloned.value = cloned.value.replace(MaskComposite.regexp, '');
73
+ }
74
+
75
+ if (this.needCascade(decl)) {
76
+ cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
77
+ }
78
+
79
+ decl.parent.insertBefore(decl, cloned);
80
+
81
+ if (!hasCompositeValues) {
82
+ return decl;
83
+ }
84
+
85
+ if (this.needCascade(decl)) {
86
+ compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
87
+ }
88
+
89
+ return decl.parent.insertBefore(decl, compositeDecl);
90
+ };
91
+
92
+ return MaskComposite;
93
+ }(Declaration);
94
+
95
+ _defineProperty(MaskComposite, "names", ['mask', 'mask-composite']);
96
+
97
+ _defineProperty(MaskComposite, "oldValues", {
98
+ add: 'source-over',
99
+ substract: 'source-out',
100
+ intersect: 'source-in',
101
+ exclude: 'xor'
102
+ });
103
+
104
+ _defineProperty(MaskComposite, "regexp", new RegExp("\\s+(" + Object.keys(MaskComposite.oldValues).join('|') + ")\\b(?!\\))\\s*(?=[,])", 'ig'));
105
+
106
+ module.exports = MaskComposite;
package/lib/prefixer.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ var vendor = require('postcss').vendor;
4
+
3
5
  var Browsers = require('./browsers');
4
6
 
5
7
  var utils = require('./utils');
6
-
7
- var vendor = require('postcss').vendor;
8
8
  /**
9
9
  * Recursively clone objects
10
10
  */
@@ -13,10 +13,8 @@ var vendor = require('postcss').vendor;
13
13
  function _clone(obj, parent) {
14
14
  var cloned = new obj.constructor();
15
15
 
16
- var _arr = Object.keys(obj || {});
17
-
18
- for (var _i = 0; _i < _arr.length; _i++) {
19
- var i = _arr[_i];
16
+ for (var _i = 0, _Object$keys = Object.keys(obj || {}); _i < _Object$keys.length; _i++) {
17
+ var i = _Object$keys[_i];
20
18
  var value = obj[i];
21
19
 
22
20
  if (i === 'parent' && typeof value === 'object') {
package/lib/prefixes.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var vendor = require('postcss').vendor;
4
+
3
5
  var Declaration = require('./declaration');
4
6
 
5
7
  var Resolution = require('./resolution');
@@ -20,8 +22,6 @@ var Value = require('./value');
20
22
 
21
23
  var utils = require('./utils');
22
24
 
23
- var vendor = require('postcss').vendor;
24
-
25
25
  Selector.hack(require('./hacks/fullscreen'));
26
26
  Selector.hack(require('./hacks/placeholder'));
27
27
  Declaration.hack(require('./hacks/flex'));
@@ -39,6 +39,7 @@ Declaration.hack(require('./hacks/align-self'));
39
39
  Declaration.hack(require('./hacks/appearance'));
40
40
  Declaration.hack(require('./hacks/flex-basis'));
41
41
  Declaration.hack(require('./hacks/mask-border'));
42
+ Declaration.hack(require('./hacks/mask-composite'));
42
43
  Declaration.hack(require('./hacks/align-items'));
43
44
  Declaration.hack(require('./hacks/flex-shrink'));
44
45
  Declaration.hack(require('./hacks/break-props'));
@@ -54,6 +55,7 @@ Declaration.hack(require('./hacks/grid-row-align'));
54
55
  Declaration.hack(require('./hacks/transform-decl'));
55
56
  Declaration.hack(require('./hacks/flex-direction'));
56
57
  Declaration.hack(require('./hacks/image-rendering'));
58
+ Declaration.hack(require('./hacks/backdrop-filter'));
57
59
  Declaration.hack(require('./hacks/background-clip'));
58
60
  Declaration.hack(require('./hacks/text-decoration'));
59
61
  Declaration.hack(require('./hacks/justify-content'));
package/lib/processor.js CHANGED
@@ -441,6 +441,16 @@ function () {
441
441
  notHack = true;
442
442
  }
443
443
 
444
+ if (decl.prop === '-webkit-box-orient') {
445
+ var hacks = {
446
+ 'flex-direction': true,
447
+ 'flex-flow': true
448
+ };
449
+ if (!decl.parent.some(function (j) {
450
+ return hacks[j.prop];
451
+ })) return;
452
+ }
453
+
444
454
  if (notHack && !_this2.withHackValue(decl)) {
445
455
  if (decl.raw('before').indexOf('\n') > -1) {
446
456
  _this2.reduceSpaces(decl);
package/lib/resolution.js CHANGED
@@ -4,14 +4,14 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaul
4
4
 
5
5
  function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
6
6
 
7
+ var n2f = require('num2fraction');
8
+
7
9
  var Prefixer = require('./prefixer');
8
10
 
9
11
  var utils = require('./utils');
10
12
 
11
- var n2f = require('num2fraction');
12
-
13
- var REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi)/gi;
14
- var SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi)/i;
13
+ var REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi|x)/gi;
14
+ var SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi|x)/i;
15
15
 
16
16
  var Resolution =
17
17
  /*#__PURE__*/
package/lib/supports.js CHANGED
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ var postcss = require('postcss');
4
+
5
+ var data = require('caniuse-lite').feature(require('caniuse-lite/data/features/css-featurequeries.js'));
6
+
3
7
  var Browsers = require('./browsers');
4
8
 
5
9
  var brackets = require('./brackets');
@@ -8,12 +12,8 @@ var Value = require('./value');
8
12
 
9
13
  var utils = require('./utils');
10
14
 
11
- var postcss = require('postcss');
12
-
13
15
  var supported = [];
14
16
 
15
- var data = require('caniuse-lite').feature(require('caniuse-lite/data/features/css-featurequeries.js'));
16
-
17
17
  for (var browser in data.stats) {
18
18
  var versions = data.stats[browser];
19
19
 
package/lib/value.js CHANGED
@@ -4,14 +4,14 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaul
4
4
 
5
5
  function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _defaults(subClass, superClass); }
6
6
 
7
+ var vendor = require('postcss').vendor;
8
+
7
9
  var Prefixer = require('./prefixer');
8
10
 
9
11
  var OldValue = require('./old-value');
10
12
 
11
13
  var utils = require('./utils');
12
14
 
13
- var vendor = require('postcss').vendor;
14
-
15
15
  var Value =
16
16
  /*#__PURE__*/
17
17
  function (_Prefixer) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autoprefixer",
3
- "version": "9.4.10",
3
+ "version": "9.6.1",
4
4
  "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website",
5
5
  "keywords": ["autoprefixer", "css", "prefix", "postcss", "postcss-plugin"],
6
6
  "author": "Andrey Sitnik <andrey@sitnik.ru>",
@@ -10,15 +10,19 @@
10
10
  "node": ">=6.0.0"
11
11
  },
12
12
  "dependencies": {
13
- "browserslist": "^4.4.2",
14
- "caniuse-lite": "^1.0.30000940",
13
+ "browserslist": "^4.6.3",
14
+ "caniuse-lite": "^1.0.30000980",
15
+ "chalk": "^2.4.2",
15
16
  "normalize-range": "^0.1.2",
16
17
  "num2fraction": "^1.2.2",
17
- "postcss": "^7.0.14",
18
- "postcss-value-parser": "^3.3.1"
18
+ "postcss": "^7.0.17",
19
+ "postcss-value-parser": "^4.0.0"
19
20
  },
20
21
  "bin": {
21
22
  "autoprefixer": "./bin/autoprefixer"
22
23
  },
24
+ "browser": {
25
+ "chalk": false
26
+ },
23
27
  "main": "lib/autoprefixer"
24
28
  }