postcss-preset-env 8.0.0-alpha.1 → 8.0.0

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,5 +1,110 @@
1
1
  # Changes to PostCSS Preset Env
2
2
 
3
+ ### 8.0.0 (January 24, 2023)
4
+
5
+ - See [the dedicated Wiki page](https://github.com/csstools/postcss-plugins/wiki/PostCSS-Preset-Env-8) for more information.
6
+ - Added: TypeScript support.
7
+ - Added `@csstools/postcss-media-queries-aspect-ratio-number-values` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-media-queries-aspect-ratio-number-values#readme) for usage details.
8
+ - Added `@csstools/postcss-logical-float-and-clear` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-float-and-clear#readme) for usage details.
9
+ - Added `@csstools/postcss-logical-resize` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-resize#readme) for usage details.
10
+ - Added `@csstools/postcss-logical-viewport-units` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-viewport-units#readme) for usage details.
11
+ - Added `logical` option to control all logical plugins.
12
+ - Added `@csstools/postcss-scope-pseudo-class` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-scope-pseudo-class#readme) for usage details.
13
+ - Updated Support for Node v14+ (major).
14
+ - Fixed: `all-property` and `overflow-wrap-property` now follow the `preserve` plugin option
15
+ - Removed a workaround to consider `blank-pseudo-class` and `prefers-color-scheme-query` as `stage: 1` features when using default options.
16
+ - Removed `postcss-env-function` (breaking).
17
+ - Removed `importFrom` and `exportTo` plugin options from multiple plugins. (breaking)
18
+ - `postcss-custom-media`
19
+ - `postcss-custom-properties`
20
+ - `postcss-custom-selectors`
21
+ - Breaking: `enableClientSidePolyfills` is now `false` by default (was `true`)
22
+ - Updated `@csstools/postcss-cascade-layers` to `3.0.0` (major)
23
+ - Updated `@csstools/postcss-color-function` to `2.0.0` (major)
24
+ - Updated `@csstools/postcss-font-format-keywords` to `2.0.0` (major)
25
+ - Updated `@csstools/postcss-hwb-function` to `2.0.0` (major)
26
+ - Updated `@csstools/postcss-ic-unit` to `2.0.0` (major)
27
+ - Updated `@csstools/postcss-is-pseudo-class` to `3.0.0` (major)
28
+ - Updated `@csstools/postcss-nested-calc` to `2.0.0` (major)
29
+ - Updated `@csstools/postcss-normalize-display-values` to `2.0.0` (major)
30
+ - Updated `@csstools/postcss-oklab-function` to `2.0.0` (major)
31
+ - Updated `@csstools/postcss-scope-pseudo-class` to `2.0.0` (major)
32
+ - Updated `@csstools/postcss-stepped-value-functions` to `2.0.0` (major)
33
+ - Updated `@csstools/postcss-text-decoration-shorthand` to `2.0.0` (major)
34
+ - Updated `@csstools/postcss-trigonometric-functions` to `2.0.0` (major)
35
+ - Updated `@csstools/postcss-unset-value` to `2.0.0` (major)
36
+ - Updated `css-blank-pseudo` to `5.0.0` (major)
37
+ - Updated `css-has-pseudo` to `5.0.0` (major)
38
+ - Updated `css-prefers-color-scheme` to `8.0.0` (major)
39
+ - Updated `postcss-attribute-case-insensitive` to `6.0.0` (major)
40
+ - Updated `postcss-color-functional-notation` to `5.0.0` (major)
41
+ - Updated `postcss-color-hex-alpha` to `9.0.0` (major)
42
+ - Updated `postcss-color-rebeccapurple` to `8.0.0` (major)
43
+ - Updated `postcss-custom-media` to `9.1.0` (major)
44
+ - Updated `postcss-custom-properties` to `13.1.0` (minor)
45
+ - Updated `postcss-custom-selectors` to `7.1.0` (minor)
46
+ - Updated `postcss-dir-pseudo-class` to `7.0.0` (major)
47
+ - Updated `postcss-double-position-gradients` to `4.0.0` (major)
48
+ - Updated `postcss-focus-visible` to `8.0.0` (major)
49
+ - Updated `postcss-focus-within` to `7.0.0` (major)
50
+ - Updated `postcss-gap-properties` to `4.0.0` (major)
51
+ - Updated `postcss-image-set-function` to `5.0.0` (major)
52
+ - Updated `postcss-lab-function` to `5.0.0` (major)
53
+ - Updated `postcss-logical` to `6.0.0` (major)
54
+ - Updated `postcss-nesting` to `11.0.0` (major)
55
+ - Updated `postcss-overflow-shorthand` to `4.0.0` (major)
56
+ - Updated `postcss-place` to `8.0.0` (major)
57
+ - Updated `postcss-pseudo-class-any-link` to `8.0.0` (major)
58
+ - Updated `postcss-selector-not` to `7.0.0` (major)
59
+
60
+ ### (8.0.0-rc.0) (January 24, 2023)
61
+
62
+ - Added: TypeScript support.
63
+ - Added `@csstools/postcss-media-queries-aspect-ratio-number-values` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-media-queries-aspect-ratio-number-values#readme) for usage details.
64
+ - Added `@csstools/postcss-logical-float-and-clear` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-float-and-clear#readme) for usage details.
65
+ - Added `@csstools/postcss-logical-resize` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-resize#readme) for usage details.
66
+ - Added `@csstools/postcss-logical-viewport-units` [Check the plugin README](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-viewport-units#readme) for usage details.
67
+ - Added `logical` option to control all logical plugins.
68
+ - Fixed: `all-property` and `overflow-wrap-property` now follow the `preserve` plugin option
69
+ - Removed a workaround to consider `blank-pseudo-class` and `prefers-color-scheme-query` as `stage: 1` features when using default options.
70
+ - Updated `@csstools/postcss-cascade-layers` to `3.0.0` (major)
71
+ - Updated `@csstools/postcss-color-function` to `2.0.0` (major)
72
+ - Updated `@csstools/postcss-font-format-keywords` to `2.0.0` (major)
73
+ - Updated `@csstools/postcss-hwb-function` to `2.0.0` (major)
74
+ - Updated `@csstools/postcss-ic-unit` to `2.0.0` (major)
75
+ - Updated `@csstools/postcss-is-pseudo-class` to `3.0.0` (major)
76
+ - Updated `@csstools/postcss-nested-calc` to `2.0.0` (major)
77
+ - Updated `@csstools/postcss-normalize-display-values` to `2.0.0` (major)
78
+ - Updated `@csstools/postcss-oklab-function` to `2.0.0` (major)
79
+ - Updated `@csstools/postcss-scope-pseudo-class` to `2.0.0` (major)
80
+ - Updated `@csstools/postcss-stepped-value-functions` to `2.0.0` (major)
81
+ - Updated `@csstools/postcss-text-decoration-shorthand` to `2.0.0` (major)
82
+ - Updated `@csstools/postcss-trigonometric-functions` to `2.0.0` (major)
83
+ - Updated `@csstools/postcss-unset-value` to `2.0.0` (major)
84
+ - Updated `css-blank-pseudo` to `5.0.0` (major)
85
+ - Updated `css-has-pseudo` to `5.0.0` (major)
86
+ - Updated `css-prefers-color-scheme` to `8.0.0` (major)
87
+ - Updated `postcss-attribute-case-insensitive` to `6.0.0` (major)
88
+ - Updated `postcss-color-functional-notation` to `5.0.0` (major)
89
+ - Updated `postcss-color-hex-alpha` to `9.0.0` (major)
90
+ - Updated `postcss-color-rebeccapurple` to `8.0.0` (major)
91
+ - Updated `postcss-custom-media` to `9.1.0` (major)
92
+ - Updated `postcss-custom-properties` to `13.1.0` (minor)
93
+ - Updated `postcss-custom-selectors` to `7.1.0` (minor)
94
+ - Updated `postcss-dir-pseudo-class` to `7.0.0` (major)
95
+ - Updated `postcss-double-position-gradients` to `4.0.0` (major)
96
+ - Updated `postcss-focus-visible` to `8.0.0` (major)
97
+ - Updated `postcss-focus-within` to `7.0.0` (major)
98
+ - Updated `postcss-gap-properties` to `4.0.0` (major)
99
+ - Updated `postcss-image-set-function` to `5.0.0` (major)
100
+ - Updated `postcss-lab-function` to `5.0.0` (major)
101
+ - Updated `postcss-logical` to `6.0.0` (major)
102
+ - Updated `postcss-nesting` to `11.0.0` (major)
103
+ - Updated `postcss-overflow-shorthand` to `4.0.0` (major)
104
+ - Updated `postcss-place` to `8.0.0` (major)
105
+ - Updated `postcss-pseudo-class-any-link` to `8.0.0` (major)
106
+ - Updated `postcss-selector-not` to `7.0.0` (major)
107
+
3
108
  ### (8.0.0-alpha.1) (November 14, 2022)
4
109
 
5
110
  - Updated Support for Node v14+ (major).
package/README.md CHANGED
@@ -152,8 +152,8 @@ postcss([
152
152
 
153
153
  [PostCSS Preset Env] runs in all Node environments, with special instructions for:
154
154
 
155
- | [Node](INSTALL.md#node) | [PostCSS CLI](INSTALL.md#postcss-cli) | [Webpack](INSTALL.md#webpack) | [Create React App](INSTALL.md#create-react-app) | [Gulp](INSTALL.md#gulp) | [Grunt](INSTALL.md#grunt) | [Rollup](INSTALL.md#rollup) |
156
- | --- | --- | --- | --- | --- | --- | --- |
155
+ | [Node](INSTALL.md#node) | [PostCSS CLI](INSTALL.md#postcss-cli) | [Webpack](INSTALL.md#webpack) | [Gulp](INSTALL.md#gulp) | [Grunt](INSTALL.md#grunt) | [Rollup](INSTALL.md#rollup) |
156
+ | --- | --- | --- | --- | --- | --- |
157
157
 
158
158
  ## Options
159
159
 
@@ -218,7 +218,7 @@ postcssPresetEnv({
218
218
  /* use stage 3 features + custom-selectors (preserving the original CSS) */
219
219
  stage: 3,
220
220
  features: {
221
- 'custom-selectors': { preserve: true }
221
+ 'custom-selectors': { preserve: true }
222
222
  }
223
223
  })
224
224
  ```
@@ -334,7 +334,53 @@ The `debug` option enables debugging messages to stdout which should be useful t
334
334
 
335
335
  The `enableClientSidePolyfills` enables any feature that would need an extra browser library to be loaded into the page for it to work. Defaults to `false`.
336
336
 
337
- Note that manually enabling/disabling features via the "feature" option overrides this flag.
337
+ - Note that manually enabling/disabling features via the "feature" option overrides this flag.
338
+ - This only controls if the PostCSS plugins are enabled. It does not cause the browsers libraries to be included in your bundle.
339
+
340
+ ### logical
341
+
342
+ The `logical` option can hold an object which lets you specify direction of the inline and block axes and will affect the
343
+ following features:
344
+
345
+ - `logical-properties-and-values`: [PostCSS Logical](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical#readme)
346
+ - `float-clear-logical-values`: [PostCSS Logical Float And Clear](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical#readme)
347
+ - `logical-resize`: [PostCSS Logical Resize](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logical-resize#readme)
348
+ - `logical-viewport-units`: [PostCSS Logical Viewport Units](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-logica-viewport-unitsl#readme)
349
+
350
+ It should have `blockDirection` and/or `inlineDirection` which can be any of the following:
351
+
352
+ - `top-to-bottom`
353
+ - `bottom-to-top`
354
+ - `left-to-right`
355
+ - `right-to-left`
356
+
357
+ ```js
358
+ postcssPresetEnv({
359
+ logical: { // instruct all logical plugins to set inline axis to right to left
360
+ inlineDirection: 'right-to-left',
361
+ },
362
+ });
363
+ ```
364
+
365
+ ```pcss
366
+ .element {
367
+ float: inline-start;
368
+ padding-inline-end: 10px;
369
+ }
370
+ ```
371
+
372
+ Becomes :
373
+
374
+ ```
375
+ .element {
376
+ float: right;
377
+ padding-left: 10px;
378
+ }
379
+ ```
380
+
381
+ You can't mix two vertical directions or two horizontal directions so for example `top-to-bottom` and `right-to-left` are valid, but `top-to-bottom` and `bottom-to-top` are not.
382
+
383
+ You might want to tweak these values if you are using a different writing system, such as Arabic, Hebrew or Chinese for example.
338
384
 
339
385
  ## Stability and Portability
340
386
 
@@ -369,8 +415,6 @@ Given they have no support they will always be enabled if they match by Stage:
369
415
 
370
416
  * `blank-pseudo-class`: [Plugin](https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo) / [Polyfill](https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README-BROWSER.md)
371
417
  * `custom-media-queries`: [Plugin](https://github.com/postcss/postcss-custom-media)
372
- * `has-pseudo-class`: [Plugin](https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo) / [Polyfill](https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README-BROWSER.md)
373
- * `image-set-function`: [Plugin](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-image-set-function)
374
418
  * `media-query-ranges`: [Plugin](https://github.com/postcss/postcss-media-minmax)
375
419
  * `nesting-rules`: [Plugin](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting)
376
420
 
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var s=require("autoprefixer"),e=require("cssdb"),o=require("@csstools/postcss-progressive-custom-properties"),t=require("browserslist"),i=require("postcss-initial"),r=require("postcss-pseudo-class-any-link"),a=require("css-blank-pseudo"),n=require("postcss-page-break"),c=require("@csstools/postcss-cascade-layers"),p=require("postcss-attribute-case-insensitive"),l=require("postcss-clamp"),u=require("@csstools/postcss-color-function"),m=require("postcss-color-functional-notation"),d=require("postcss-custom-media"),g=require("postcss-custom-properties"),f=require("postcss-custom-selectors"),b=require("postcss-dir-pseudo-class"),h=require("@csstools/postcss-normalize-display-values"),N=require("postcss-double-position-gradients"),y=require("postcss-focus-visible"),k=require("postcss-focus-within"),v=require("@csstools/postcss-font-format-keywords"),w=require("postcss-font-variant"),q=require("postcss-gap-properties"),S=require("css-has-pseudo"),F=require("postcss-color-hex-alpha"),O=require("@csstools/postcss-hwb-function"),$=require("@csstools/postcss-ic-unit"),P=require("postcss-image-set-function"),x=require("@csstools/postcss-is-pseudo-class"),E=require("postcss-lab-function"),I=require("postcss-logical"),B=require("postcss-media-minmax"),C=require("@csstools/postcss-nested-calc"),U=require("postcss-nesting"),_=require("postcss-selector-not"),L=require("@csstools/postcss-oklab-function"),j=require("postcss-opacity-percentage"),A=require("postcss-overflow-shorthand"),R=require("postcss-replace-overflow-wrap"),D=require("postcss-place"),M=require("css-prefers-color-scheme"),W=require("postcss-color-rebeccapurple"),V=require("@csstools/postcss-scope-pseudo-class"),T=require("@csstools/postcss-stepped-value-functions"),H=require("@csstools/postcss-text-decoration-shorthand"),z=require("@csstools/postcss-trigonometric-functions"),G=require("@csstools/postcss-unset-value");const J={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README-BROWSER.md","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/jsxtools/focus-within/blob/master/README-BROWSER.md","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README-BROWSER.md","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README-BROWSER.md"},K=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,e,o){if(e.debug){o.log("Enabling the following feature(s):");const e=[];s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?o.log(` ${s.id} (injected via options)`):o.log(` ${s.id}`),void 0!==J[s.id]&&e.push(s.id)})),e.length&&(o.log("These feature(s) need a browser library to work:"),e.forEach((s=>o.log(` ${s}: ${J[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const e={};return"preserve"in s&&(e.preserve=s.preserve),e}return!1}function clamp(s,e,o){return Math.max(s,Math.min(e,o))}function stageFromOptions(s,e){let o=2;if(void 0===s.stage)return e.log(`Using features from Stage ${o} (default)`),o;if(!1===s.stage)o=5;else{let e=parseInt(s.stage,10);Number.isNaN(e)&&(e=0),o=clamp(0,e,5)}return 5===o?e.log('Stage has been disabled, features will be handled via the "features" option.'):e.log(`Using features from Stage ${o}`),o}const Z=Symbol("insertBefore"),Q=Symbol("insertAfter"),X=Symbol("insertOrder"),Y=Symbol("plugin");function getTransformedInsertions(s,e,o){if("insertBefore"!==o&&"insertAfter"!==o)return[];const t="insertBefore"===o?Z:Q,i=[];for(const o in e){if(!Object.hasOwnProperty.call(e,o))continue;if(!s.find((s=>s.id===o)))continue;let r=e[o];Array.isArray(r)||(r=[r]);for(let s=0;s<r.length;s++)i.push({id:o,[Y]:r[s],[X]:s,[t]:!0})}return i}var ss=["cascade-layers","custom-media-queries","custom-properties","environment-variables","image-set-function","media-query-ranges","prefers-color-scheme-query","nesting-rules","custom-selectors","any-link-pseudo-class","case-insensitive-attributes","focus-visible-pseudo-class","focus-within-pseudo-class","not-pseudo-class","logical-properties-and-values","dir-pseudo-class","all-property","color-functional-notation","double-position-gradients","hexadecimal-alpha-notation","hwb-function","lab-function","rebeccapurple-color","blank-pseudo-class","break-properties","font-variant-property","is-pseudo-class","scope-pseudo-class","has-pseudo-class","gap-properties","overflow-property","overflow-wrap-property","place-properties","system-ui-font-family","stepped-value-functions","trigonometric-functions"];function featureIsLess(s,e){return s.id===e.id?s[Z]&&e[Z]||s[Q]&&e[Q]?clamp(-1,s[X]-e[X],1):s[Z]||e[Q]?-1:s[Q]||e[Z]?1:0:clamp(-1,ss.indexOf(s.id)-ss.indexOf(e.id),1)}function postcssSystemUiFont(){return{postcssPlugin:"postcss-system-ui-font",Declaration(s){es.test(s.prop)&&(s.value.includes(ts.join(", "))||(s.value=s.value.replace(is,rs)))}}}postcssSystemUiFont.postcss=!0;const es=/(?:^(?:-|\\002d){2})|(?:^font(?:-family)?$)/i,os="[\\f\\n\\r\\x09\\x20]",ts=["system-ui","-apple-system","Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans","sans-serif"],is=new RegExp(`(^|,|${os}+)(?:system-ui${os}*)(?:,${os}*(?:${ts.join("|")})${os}*)?(,|$)`,"i"),rs=`$1${ts.join(", ")}$2`,as=new Map([["all-property",i],["any-link-pseudo-class",r],["blank-pseudo-class",a],["break-properties",n],["cascade-layers",c],["case-insensitive-attributes",p],["clamp",l],["color-function",u],["color-functional-notation",m],["custom-media-queries",d],["custom-properties",g],["custom-selectors",f],["dir-pseudo-class",b],["display-two-values",h],["double-position-gradients",N],["focus-visible-pseudo-class",y],["focus-within-pseudo-class",k],["font-format-keywords",v],["font-variant-property",w],["gap-properties",q],["has-pseudo-class",S],["hexadecimal-alpha-notation",F],["hwb-function",O],["ic-unit",$],["image-set-function",P],["is-pseudo-class",x],["lab-function",E],["logical-properties-and-values",I],["media-query-ranges",B],["nested-calc",C],["nesting-rules",U],["not-pseudo-class",_],["oklab-function",L],["opacity-percentage",j],["overflow-property",A],["overflow-wrap-property",R],["place-properties",D],["prefers-color-scheme-query",M],["rebeccapurple-color",W],["scope-pseudo-class",V],["stepped-value-functions",T],["system-ui-font-family",postcssSystemUiFont],["text-decoration-shorthand",H],["trigonometric-functions",z],["unset-value",G]]);function featureIsInsertedOrHasAPlugin(s){return!!s[Z]||(!!s[Q]||!!as.has(s.id))}function prepareFeaturesList(s,e,o){return s.concat(getTransformedInsertions(s,e,"insertBefore"),getTransformedInsertions(s,o,"insertAfter")).filter((s=>featureIsInsertedOrHasAPlugin(s))).sort(((s,e)=>featureIsLess(s,e)))}const ns=["and_chr","and_ff","and_qq","and_uc","android","baidu","chrome","edge","firefox","ie","ie_mob","ios_saf","kaios","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const e=[];return ns.forEach((o=>{if("op_mini"===o&&void 0===s.browser_support[o])return void e.push("op_mini all");const t=s.browser_support[o];"string"==typeof t&&/^[0-9|.]+$/.test(t)?e.push(`${o} < ${s.browser_support[o]}`):e.push(`${o} >= 1`)})),e}function getOptionsForBrowsersByFeature(s,e,o,i){const r=t(s,{ignoreUnknownVersions:!0});switch(e.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"nesting-rules":if(needsOptionFor(o.find((s=>"is-pseudo-class"===s.id)),r))return i.log('Disabling :is on "nesting-rules" due to lack of browser support.'),{noIsPseudoSelector:!0};return{};case"any-link-pseudo-class":if(r.find((s=>s.startsWith("ie ")||s.startsWith("edge "))))return i.log('Adding area[href] fallbacks for ":any-link" support in Edge and IE.'),{subFeatures:{areaHrefNeedsFixing:!0}};return{};default:return{}}}function needsOptionFor(s,e){const o=getUnsupportedBrowsersByFeature(s);return!!e.some((s=>t(o,{ignoreUnknownVersions:!0}).some((e=>e===s))))}function formatPolyfillableFeature(s){const e=getUnsupportedBrowsersByFeature(s);if(s[Z]||s[Q]){let o=s.id;return o=s.insertBefore?`before-${o}`:`after-${o}`,{browsers:e,vendors_implementations:s.vendors_implementations,plugin:s[Y],id:o,stage:6}}return{browsers:e,vendors_implementations:s.vendors_implementations,plugin:as.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,e,o,t,i,r){let a,n;return a=getOptionsForBrowsersByFeature(e,t,s,r),!0===o[t.id]?i&&(a=Object.assign({},a,i)):a=i?Object.assign({},a,i,o[t.id]):Object.assign({},a,o[t.id]),a.enableProgressiveCustomProperties=!1,n=t.plugin.postcss&&"function"==typeof t.plugin?t.plugin(a):t.plugin&&t.plugin.default&&"function"==typeof t.plugin.default&&t.plugin.default.postcss?t.plugin.default(a):t.plugin,{browsers:t.browsers,vendors_implementations:t.vendors_implementations,plugin:n,pluginOptions:a,id:t.id}}function intOrZero(s){const e=parseInt(s,10);return Number.isNaN(e)?0:e}function listFeatures(s,e,o,i){const r=Object(e.features),a="enableClientSidePolyfills"in e&&e.enableClientSidePolyfills,n=Object(e.insertBefore),c=Object(e.insertAfter),p=e.browsers,l=clamp(0,intOrZero(e.minimumVendorImplementations),3);l>0&&i.log(`Using features with ${l} or more vendor implementations`);const u=stageFromOptions(e,i);2===u&&o&&!1===o.preserve&&(s=JSON.parse(JSON.stringify(s))).forEach((s=>{("blank-pseudo-class"===s.id||"prefers-color-scheme-query"===s.id)&&(s.stage=1)}));const m=prepareFeaturesList(s,n,c).map((s=>formatPolyfillableFeature(s))).filter((s=>0===l||(!(!s[Z]&&!s[Q])||(l<=s.vendors_implementations||(r[s.id]?(i.log(` ${s.id} does not meet the required vendor implementations but has been enabled by options`),!0):(i.log(` ${s.id} with ${s.vendors_implementations} vendor implementations has been disabled`),!1)))))).filter((s=>{const e=s.stage>=u,o=a||!K.includes(s.id),t=!1===r[s.id],n=r[s.id]?r[s.id]:e&&o;return t?i.log(` ${s.id} has been disabled by options`):e?o||i.log(` ${s.id} has been disabled by "enableClientSidePolyfills: false".`):n?i.log(` ${s.id} does not meet the required stage but has been enabled by options`):i.log(` ${s.id} with stage ${s.stage} has been disabled`),n})).map((e=>formatStagedFeature(s,p,r,e,o,i))),d=t(p,{ignoreUnknownVersions:!0});return m.filter((s=>{if(s.id in r)return r[s.id];const e=t(s.browsers,{ignoreUnknownVersions:!0}),o=d.some((s=>e.some((e=>e===s))));return o||i.log(`${s.id} disabled due to browser support`),o}))}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}dumpLogs(s){s&&this.logs.forEach((e=>s.warn(e))),this.resetLogger()}}var cs=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"}];function getPackageNamesToIds(){const s={};return cs.forEach((e=>{s[e.packageName]=e.id})),s}function pluginIdHelp(s,e,o){const t=cs.map((s=>s.id)),i=cs.map((s=>s.packageName)),r=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const a=mostSimilar(s,t),n=mostSimilar(s,i);Math.min(a.distance,n.distance)>10?e.warn(o`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`):a.distance<n.distance?e.warn(o,`Unknown feature: "${s}", did you mean: "${a.mostSimilar}"`):e.warn(o,`Unknown feature: "${s}", did you mean: "${r[n.mostSimilar]}"`)}))}function mostSimilar(s,e){let o="unknown",t=1/0;for(let i=0;i<e.length;i++){const r=levenshteinDistance(s,e[i]);r<t&&(t=r,o=e[i])}return{mostSimilar:o,distance:t}}function levenshteinDistance(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let i=1;i<=s.length;i++)o[t][i]=0===t?i:Math.min(o[t-1][i]+1,o[t][i-1]+1,o[t-1][i-1]+(s[i-1]===e[t-1]?0:1))}return o[e.length][s.length]}const plugin=t=>{const i=new Logger,r=Object(t),a=Object.keys(Object(r.features)),n=r.browsers,c=initializeSharedOptions(r),p=listFeatures(e,r,c,i),l=p.map((s=>s.plugin));!1!==r.autoprefixer&&l.push(s(Object.assign({overrideBrowserslist:n},r.autoprefixer))),l.push(o()),logFeaturesList(p,r,i);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit:function(s,{result:e}){pluginIdHelp(a,s,e),r.debug&&i.dumpLogs(e),i.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};plugin.postcss=!0,module.exports=plugin;
1
+ "use strict";var s=require("autoprefixer"),e=require("cssdb"),o=require("@csstools/postcss-progressive-custom-properties"),t=require("browserslist"),i=require("postcss-initial"),a=require("postcss-pseudo-class-any-link"),r=require("css-blank-pseudo"),c=require("postcss-page-break"),n=require("@csstools/postcss-cascade-layers"),p=require("postcss-attribute-case-insensitive"),l=require("postcss-clamp"),u=require("@csstools/postcss-color-function"),m=require("postcss-color-functional-notation"),d=require("postcss-custom-media"),g=require("postcss-custom-properties"),f=require("postcss-custom-selectors"),b=require("postcss-dir-pseudo-class"),h=require("@csstools/postcss-normalize-display-values"),N=require("postcss-double-position-gradients"),v=require("@csstools/postcss-logical-float-and-clear"),y=require("postcss-focus-visible"),k=require("postcss-focus-within"),w=require("@csstools/postcss-font-format-keywords"),q=require("postcss-font-variant"),F=require("postcss-gap-properties"),S=require("css-has-pseudo"),O=require("postcss-color-hex-alpha"),$=require("@csstools/postcss-hwb-function"),x=require("@csstools/postcss-ic-unit"),P=require("postcss-image-set-function"),C=require("@csstools/postcss-is-pseudo-class"),E=require("postcss-lab-function"),I=require("postcss-logical"),B=require("@csstools/postcss-logical-resize"),U=require("@csstools/postcss-logical-viewport-units"),_=require("@csstools/postcss-media-queries-aspect-ratio-number-values"),L=require("postcss-media-minmax"),A=require("@csstools/postcss-nested-calc"),R=require("postcss-nesting"),j=require("postcss-selector-not"),M=require("@csstools/postcss-oklab-function"),D=require("postcss-opacity-percentage"),V=require("postcss-overflow-shorthand"),W=require("postcss-replace-overflow-wrap"),z=require("postcss-place"),T=require("css-prefers-color-scheme"),H=require("postcss-color-rebeccapurple"),G=require("@csstools/postcss-scope-pseudo-class"),K=require("@csstools/postcss-stepped-value-functions"),Z=require("@csstools/postcss-text-decoration-shorthand"),Q=require("@csstools/postcss-trigonometric-functions"),J=require("@csstools/postcss-unset-value");const X={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README-BROWSER.md","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/jsxtools/focus-within/blob/master/README-BROWSER.md","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README-BROWSER.md","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README-BROWSER.md"},Y=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,e,o){if(e.debug){o.log("Enabling the following feature(s):");const t=[],i=[];!1!==e.autoprefixer&&i.push(" autoprefixer"),s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?i.push(` ${s.id} (injected via options)`):i.push(` ${s.id}`),void 0!==X[s.id]&&t.push(s.id)})),i.sort(((s,e)=>s.localeCompare(e))),t.sort(((s,e)=>s.localeCompare(e))),i.forEach((s=>o.log(s))),t.length&&(o.log("These feature(s) need a browser library to work:"),t.forEach((s=>o.log(` ${s}: ${X[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const e={};return e.preserve=s.preserve,e}return!1}function clamp(s,e,o){return Math.max(s,Math.min(e,o))}function stageFromOptions(s,e){let o=2;if(void 0===s.stage)return e.log(`Using features from Stage ${o} (default)`),o;if(!1===s.stage)o=5;else{let e=parseInt(s.stage,10);Number.isNaN(e)&&(e=0),o=clamp(0,e,5)}return 5===o?e.log('Stage has been disabled, features will be handled via the "features" option.'):e.log(`Using features from Stage ${o}`),o}const ss=Symbol("insertBefore"),es=Symbol("insertAfter"),os=Symbol("insertOrder"),ts=Symbol("plugin");function getTransformedInsertions(s,e,o){if("insertBefore"!==o&&"insertAfter"!==o)return[];const t="insertBefore"===o?ss:es,i=[];for(const o in e){if(!Object.hasOwnProperty.call(e,o))continue;if(!s.find((s=>s.id===o)))continue;let a=e[o];Array.isArray(a)||(a=[a]);for(let s=0;s<a.length;s++)i.push({id:o,[ts]:a[s],[os]:s,[t]:!0})}return i}var is=["custom-media-queries","custom-properties","environment-variables","image-set-function","media-query-ranges","media-queries-aspect-ratio-number-values","prefers-color-scheme-query","nesting-rules","custom-selectors","any-link-pseudo-class","case-insensitive-attributes","focus-visible-pseudo-class","focus-within-pseudo-class","not-pseudo-class","logical-properties-and-values","dir-pseudo-class","all-property","color-functional-notation","double-position-gradients","hexadecimal-alpha-notation","hwb-function","lab-function","rebeccapurple-color","blank-pseudo-class","break-properties","font-variant-property","is-pseudo-class","scope-pseudo-class","has-pseudo-class","gap-properties","overflow-property","overflow-wrap-property","place-properties","system-ui-font-family","stepped-value-functions","trigonometric-functions","cascade-layers"];function featureIsLess(s,e){return s.id===e.id?s[ss]&&e[ss]||s[es]&&e[es]?clamp(-1,s[os]-e[os],1):s[ss]||e[es]?-1:s[es]||e[ss]?1:0:clamp(-1,is.indexOf(s.id)-is.indexOf(e.id),1)}function postcssSystemUiFont(){return{postcssPlugin:"postcss-system-ui-font",Declaration(s){as.test(s.prop)&&(s.value.includes(cs.join(", "))||(s.value=s.value.replace(ns,ps)))}}}postcssSystemUiFont.postcss=!0;const as=/(?:^(?:-|\\002d){2})|(?:^font(?:-family)?$)/i,rs="[\\f\\n\\r\\x09\\x20]",cs=["system-ui","-apple-system","Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans","sans-serif"],ns=new RegExp(`(^|,|${rs}+)(?:system-ui${rs}*)(?:,${rs}*(?:${cs.join("|")})${rs}*)?(,|$)`,"i"),ps=`$1${cs.join(", ")}$2`,ls=new Map([["all-property",i],["any-link-pseudo-class",a],["blank-pseudo-class",r],["break-properties",c],["cascade-layers",n],["case-insensitive-attributes",p],["clamp",l],["color-function",u],["color-functional-notation",m],["custom-media-queries",d],["custom-properties",g],["custom-selectors",f],["dir-pseudo-class",b],["display-two-values",h],["double-position-gradients",N],["float-clear-logical-values",v],["focus-visible-pseudo-class",y],["focus-within-pseudo-class",k],["font-format-keywords",w],["font-variant-property",q],["gap-properties",F],["has-pseudo-class",S],["hexadecimal-alpha-notation",O],["hwb-function",$],["ic-unit",x],["image-set-function",P],["is-pseudo-class",C],["lab-function",E],["logical-properties-and-values",I],["logical-resize",B],["logical-viewport-units",U],["media-queries-aspect-ratio-number-values",_],["media-query-ranges",L],["nested-calc",A],["nesting-rules",R],["not-pseudo-class",j],["oklab-function",M],["opacity-percentage",D],["overflow-property",V],["overflow-wrap-property",W],["place-properties",z],["prefers-color-scheme-query",T],["rebeccapurple-color",H],["scope-pseudo-class",G],["stepped-value-functions",K],["system-ui-font-family",postcssSystemUiFont],["text-decoration-shorthand",Z],["trigonometric-functions",Q],["unset-value",J]]);function featureIsInsertedOrHasAPlugin(s){return!!s[ss]||(!!s[es]||!!ls.has(s.id))}function prepareFeaturesList(s,e,o){return s.concat(getTransformedInsertions(s,e,"insertBefore"),getTransformedInsertions(s,o,"insertAfter")).filter((s=>featureIsInsertedOrHasAPlugin(s))).sort(((s,e)=>featureIsLess(s,e)))}const us=["and_chr","and_ff","and_qq","and_uc","android","baidu","chrome","edge","firefox","ie","ie_mob","ios_saf","kaios","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const e=[];return us.forEach((o=>{if("op_mini"===o&&void 0===s.browser_support[o])return void e.push("op_mini all");const t=s.browser_support[o];"string"==typeof t&&/^[0-9|.]+$/.test(t)?e.push(`${o} < ${s.browser_support[o]}`):e.push(`${o} >= 1`)})),e}function getOptionsForBrowsersByFeature(s,e,o,i,a){const r=t(s,{ignoreUnknownVersions:!0});switch(e.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"nesting-rules":if(needsOptionFor(o.find((s=>"is-pseudo-class"===s.id)),r))return a.log('Disabling :is on "nesting-rules" due to lack of browser support.'),{noIsPseudoSelector:!0};return{};case"any-link-pseudo-class":if(r.find((s=>s.startsWith("ie ")||s.startsWith("edge "))))return a.log('Adding area[href] fallbacks for ":any-link" support in Edge and IE.'),{subFeatures:{areaHrefNeedsFixing:!0}};return{};case"logical-properties-and-values":case"float-clear-logical-values":case"logical-resize":case"logical-viewport-units":return"logical"in i?i.logical:{};default:return{}}}function needsOptionFor(s,e){const o=getUnsupportedBrowsersByFeature(s);return!!e.some((s=>t(o,{ignoreUnknownVersions:!0}).some((e=>e===s))))}function formatPolyfillableFeature(s){const e=getUnsupportedBrowsersByFeature(s);if(s[ss]||s[es]){let o=s.id;return o=s.insertBefore?`before-${o}`:`after-${o}`,{browsers:e,vendors_implementations:s.vendors_implementations,plugin:s[ts],id:o,stage:6}}return{browsers:e,vendors_implementations:s.vendors_implementations,plugin:ls.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,e,o,t,i,a,r){let c,n;return c=getOptionsForBrowsersByFeature(e,t,s,a,r),!0===o[t.id]?i&&(c=Object.assign({},c,i)):c=i?Object.assign({},c,i,o[t.id]):Object.assign({},c,o[t.id]),c.enableProgressiveCustomProperties=!1,"all-property"===t.id&&"preserve"in c&&(c.replace=c.preserve),"overflow-wrap-property"===t.id&&"preserve"in c&&(c.method=c.preserve?"copy":"replace"),n=t.plugin.postcss&&"function"==typeof t.plugin?t.plugin(c):t.plugin&&t.plugin.default&&"function"==typeof t.plugin.default&&t.plugin.default.postcss?t.plugin.default(c):t.plugin,{browsers:t.browsers,vendors_implementations:t.vendors_implementations,plugin:n,pluginOptions:c,id:t.id}}function intOrZero(s){const e=parseInt(s,10);return Number.isNaN(e)?0:e}function listFeatures(s,e,o,i){const a=Object(e.features),r="enableClientSidePolyfills"in e&&e.enableClientSidePolyfills,c=Object(e.insertBefore),n=Object(e.insertAfter),p=e.browsers,l=clamp(0,intOrZero(e.minimumVendorImplementations),3);l>0&&i.log(`Using features with ${l} or more vendor implementations`);const u=stageFromOptions(e,i),m=prepareFeaturesList(s,c,n).map((s=>formatPolyfillableFeature(s))).filter((s=>0===l||(!(!s[ss]&&!s[es])||(l<=s.vendors_implementations||(a[s.id]?(i.log(` ${s.id} does not meet the required vendor implementations but has been enabled by options`),!0):(i.log(` ${s.id} with ${s.vendors_implementations} vendor implementations has been disabled`),!1)))))).filter((s=>{const e=s.stage>=u,o=r||!Y.includes(s.id),t=!1===a[s.id],c=a[s.id]?a[s.id]:e&&o;return t?i.log(` ${s.id} has been disabled by options`):e?o||i.log(` ${s.id} has been disabled by "enableClientSidePolyfills: false".`):c?i.log(` ${s.id} does not meet the required stage but has been enabled by options`):i.log(` ${s.id} with stage ${s.stage} has been disabled`),c})).map((t=>formatStagedFeature(s,p,a,t,o,e,i))),d=t(p,{ignoreUnknownVersions:!0});return m.filter((s=>{if(s.id in a)return a[s.id];const e=t(s.browsers,{ignoreUnknownVersions:!0}),o=d.some((s=>e.some((e=>e===s))));return o||i.log(`${s.id} disabled due to browser support`),o}))}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}dumpLogs(s){s&&this.logs.forEach((e=>s.warn(e))),this.resetLogger()}}var ms=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"@csstools/postcss-logical-float-and-clear",id:"float-clear-logical-values",importName:"postcssLogicalFloatAndClear"},{packageName:"@csstools/postcss-logical-resize",id:"logical-resize",importName:"postcssLogicalResize"},{packageName:"@csstools/postcss-logical-viewport-units",id:"logical-viewport-units",importName:"postcssLogicalViewportUnits"},{packageName:"postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"@csstools/postcss-media-queries-aspect-ratio-number-values",id:"media-queries-aspect-ratio-number-values",importName:"postcssMediaQueriesAspectRatioNumberValues"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"}];function getPackageNamesToIds(){const s={};return ms.forEach((e=>{s[e.packageName]=e.id})),s}function pluginIdHelp(s,e,o){const t=ms.map((s=>s.id)),i=ms.map((s=>s.packageName)),a=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const r=mostSimilar(s,t),c=mostSimilar(s,i);Math.min(r.distance,c.distance)>10?e.warn(o`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`):r.distance<c.distance?e.warn(o,`Unknown feature: "${s}", did you mean: "${r.mostSimilar}"`):e.warn(o,`Unknown feature: "${s}", did you mean: "${a[c.mostSimilar]}"`)}))}function mostSimilar(s,e){let o="unknown",t=1/0;for(let i=0;i<e.length;i++){const a=levenshteinDistance(s,e[i]);a<t&&(t=a,o=e[i])}return{mostSimilar:o,distance:t}}function levenshteinDistance(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let i=1;i<=s.length;i++)o[t][i]=0===t?i:Math.min(o[t-1][i]+1,o[t][i-1]+1,o[t-1][i-1]+(s[i-1]===e[t-1]?0:1))}return o[e.length][s.length]}const creator=t=>{const i=new Logger,a=Object(t),r=Object.keys(Object(a.features)),c=a.browsers,n=initializeSharedOptions(a),p=listFeatures(e,a,n,i),l=p.map((s=>s.plugin));!1!==a.autoprefixer&&l.push(s(Object.assign({overrideBrowserslist:c},a.autoprefixer))),l.push(o()),logFeaturesList(p,a,i);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit:function(s,{result:e}){pluginIdHelp(r,s,e),a.debug&&i.dumpLogs(e),i.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};creator.postcss=!0,module.exports=creator;
@@ -0,0 +1,5 @@
1
+ import type { pluginOptions } from './options';
2
+ import type { PluginCreator } from 'postcss';
3
+ export type { pluginOptions } from './options';
4
+ declare const creator: PluginCreator<pluginOptions>;
5
+ export default creator;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import s from"autoprefixer";import e from"cssdb";import o from"@csstools/postcss-progressive-custom-properties";import t from"browserslist";import i from"postcss-initial";import r from"postcss-pseudo-class-any-link";import a from"css-blank-pseudo";import n from"postcss-page-break";import p from"@csstools/postcss-cascade-layers";import c from"postcss-attribute-case-insensitive";import l from"postcss-clamp";import m from"@csstools/postcss-color-function";import u from"postcss-color-functional-notation";import d from"postcss-custom-media";import f from"postcss-custom-properties";import g from"postcss-custom-selectors";import b from"postcss-dir-pseudo-class";import h from"@csstools/postcss-normalize-display-values";import N from"postcss-double-position-gradients";import y from"postcss-focus-visible";import k from"postcss-focus-within";import v from"@csstools/postcss-font-format-keywords";import w from"postcss-font-variant";import S from"postcss-gap-properties";import F from"css-has-pseudo";import O from"postcss-color-hex-alpha";import $ from"@csstools/postcss-hwb-function";import P from"@csstools/postcss-ic-unit";import x from"postcss-image-set-function";import E from"@csstools/postcss-is-pseudo-class";import I from"postcss-lab-function";import B from"postcss-logical";import C from"postcss-media-minmax";import U from"@csstools/postcss-nested-calc";import _ from"postcss-nesting";import L from"postcss-selector-not";import j from"@csstools/postcss-oklab-function";import A from"postcss-opacity-percentage";import R from"postcss-overflow-shorthand";import q from"postcss-replace-overflow-wrap";import D from"postcss-place";import M from"css-prefers-color-scheme";import W from"postcss-color-rebeccapurple";import V from"@csstools/postcss-scope-pseudo-class";import T from"@csstools/postcss-stepped-value-functions";import H from"@csstools/postcss-text-decoration-shorthand";import z from"@csstools/postcss-trigonometric-functions";import G from"@csstools/postcss-unset-value";const J={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README-BROWSER.md","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/jsxtools/focus-within/blob/master/README-BROWSER.md","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README-BROWSER.md","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README-BROWSER.md"},K=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,e,o){if(e.debug){o.log("Enabling the following feature(s):");const e=[];s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?o.log(` ${s.id} (injected via options)`):o.log(` ${s.id}`),void 0!==J[s.id]&&e.push(s.id)})),e.length&&(o.log("These feature(s) need a browser library to work:"),e.forEach((s=>o.log(` ${s}: ${J[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const e={};return"preserve"in s&&(e.preserve=s.preserve),e}return!1}function clamp(s,e,o){return Math.max(s,Math.min(e,o))}function stageFromOptions(s,e){let o=2;if(void 0===s.stage)return e.log(`Using features from Stage ${o} (default)`),o;if(!1===s.stage)o=5;else{let e=parseInt(s.stage,10);Number.isNaN(e)&&(e=0),o=clamp(0,e,5)}return 5===o?e.log('Stage has been disabled, features will be handled via the "features" option.'):e.log(`Using features from Stage ${o}`),o}const Z=Symbol("insertBefore"),Q=Symbol("insertAfter"),X=Symbol("insertOrder"),Y=Symbol("plugin");function getTransformedInsertions(s,e,o){if("insertBefore"!==o&&"insertAfter"!==o)return[];const t="insertBefore"===o?Z:Q,i=[];for(const o in e){if(!Object.hasOwnProperty.call(e,o))continue;if(!s.find((s=>s.id===o)))continue;let r=e[o];Array.isArray(r)||(r=[r]);for(let s=0;s<r.length;s++)i.push({id:o,[Y]:r[s],[X]:s,[t]:!0})}return i}var ss=["cascade-layers","custom-media-queries","custom-properties","environment-variables","image-set-function","media-query-ranges","prefers-color-scheme-query","nesting-rules","custom-selectors","any-link-pseudo-class","case-insensitive-attributes","focus-visible-pseudo-class","focus-within-pseudo-class","not-pseudo-class","logical-properties-and-values","dir-pseudo-class","all-property","color-functional-notation","double-position-gradients","hexadecimal-alpha-notation","hwb-function","lab-function","rebeccapurple-color","blank-pseudo-class","break-properties","font-variant-property","is-pseudo-class","scope-pseudo-class","has-pseudo-class","gap-properties","overflow-property","overflow-wrap-property","place-properties","system-ui-font-family","stepped-value-functions","trigonometric-functions"];function featureIsLess(s,e){return s.id===e.id?s[Z]&&e[Z]||s[Q]&&e[Q]?clamp(-1,s[X]-e[X],1):s[Z]||e[Q]?-1:s[Q]||e[Z]?1:0:clamp(-1,ss.indexOf(s.id)-ss.indexOf(e.id),1)}function postcssSystemUiFont(){return{postcssPlugin:"postcss-system-ui-font",Declaration(s){es.test(s.prop)&&(s.value.includes(ts.join(", "))||(s.value=s.value.replace(is,rs)))}}}postcssSystemUiFont.postcss=!0;const es=/(?:^(?:-|\\002d){2})|(?:^font(?:-family)?$)/i,os="[\\f\\n\\r\\x09\\x20]",ts=["system-ui","-apple-system","Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans","sans-serif"],is=new RegExp(`(^|,|${os}+)(?:system-ui${os}*)(?:,${os}*(?:${ts.join("|")})${os}*)?(,|$)`,"i"),rs=`$1${ts.join(", ")}$2`,as=new Map([["all-property",i],["any-link-pseudo-class",r],["blank-pseudo-class",a],["break-properties",n],["cascade-layers",p],["case-insensitive-attributes",c],["clamp",l],["color-function",m],["color-functional-notation",u],["custom-media-queries",d],["custom-properties",f],["custom-selectors",g],["dir-pseudo-class",b],["display-two-values",h],["double-position-gradients",N],["focus-visible-pseudo-class",y],["focus-within-pseudo-class",k],["font-format-keywords",v],["font-variant-property",w],["gap-properties",S],["has-pseudo-class",F],["hexadecimal-alpha-notation",O],["hwb-function",$],["ic-unit",P],["image-set-function",x],["is-pseudo-class",E],["lab-function",I],["logical-properties-and-values",B],["media-query-ranges",C],["nested-calc",U],["nesting-rules",_],["not-pseudo-class",L],["oklab-function",j],["opacity-percentage",A],["overflow-property",R],["overflow-wrap-property",q],["place-properties",D],["prefers-color-scheme-query",M],["rebeccapurple-color",W],["scope-pseudo-class",V],["stepped-value-functions",T],["system-ui-font-family",postcssSystemUiFont],["text-decoration-shorthand",H],["trigonometric-functions",z],["unset-value",G]]);function featureIsInsertedOrHasAPlugin(s){return!!s[Z]||(!!s[Q]||!!as.has(s.id))}function prepareFeaturesList(s,e,o){return s.concat(getTransformedInsertions(s,e,"insertBefore"),getTransformedInsertions(s,o,"insertAfter")).filter((s=>featureIsInsertedOrHasAPlugin(s))).sort(((s,e)=>featureIsLess(s,e)))}const ns=["and_chr","and_ff","and_qq","and_uc","android","baidu","chrome","edge","firefox","ie","ie_mob","ios_saf","kaios","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const e=[];return ns.forEach((o=>{if("op_mini"===o&&void 0===s.browser_support[o])return void e.push("op_mini all");const t=s.browser_support[o];"string"==typeof t&&/^[0-9|.]+$/.test(t)?e.push(`${o} < ${s.browser_support[o]}`):e.push(`${o} >= 1`)})),e}function getOptionsForBrowsersByFeature(s,e,o,i){const r=t(s,{ignoreUnknownVersions:!0});switch(e.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"nesting-rules":if(needsOptionFor(o.find((s=>"is-pseudo-class"===s.id)),r))return i.log('Disabling :is on "nesting-rules" due to lack of browser support.'),{noIsPseudoSelector:!0};return{};case"any-link-pseudo-class":if(r.find((s=>s.startsWith("ie ")||s.startsWith("edge "))))return i.log('Adding area[href] fallbacks for ":any-link" support in Edge and IE.'),{subFeatures:{areaHrefNeedsFixing:!0}};return{};default:return{}}}function needsOptionFor(s,e){const o=getUnsupportedBrowsersByFeature(s);return!!e.some((s=>t(o,{ignoreUnknownVersions:!0}).some((e=>e===s))))}function formatPolyfillableFeature(s){const e=getUnsupportedBrowsersByFeature(s);if(s[Z]||s[Q]){let o=s.id;return o=s.insertBefore?`before-${o}`:`after-${o}`,{browsers:e,vendors_implementations:s.vendors_implementations,plugin:s[Y],id:o,stage:6}}return{browsers:e,vendors_implementations:s.vendors_implementations,plugin:as.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,e,o,t,i,r){let a,n;return a=getOptionsForBrowsersByFeature(e,t,s,r),!0===o[t.id]?i&&(a=Object.assign({},a,i)):a=i?Object.assign({},a,i,o[t.id]):Object.assign({},a,o[t.id]),a.enableProgressiveCustomProperties=!1,n=t.plugin.postcss&&"function"==typeof t.plugin?t.plugin(a):t.plugin&&t.plugin.default&&"function"==typeof t.plugin.default&&t.plugin.default.postcss?t.plugin.default(a):t.plugin,{browsers:t.browsers,vendors_implementations:t.vendors_implementations,plugin:n,pluginOptions:a,id:t.id}}function intOrZero(s){const e=parseInt(s,10);return Number.isNaN(e)?0:e}function listFeatures(s,e,o,i){const r=Object(e.features),a="enableClientSidePolyfills"in e&&e.enableClientSidePolyfills,n=Object(e.insertBefore),p=Object(e.insertAfter),c=e.browsers,l=clamp(0,intOrZero(e.minimumVendorImplementations),3);l>0&&i.log(`Using features with ${l} or more vendor implementations`);const m=stageFromOptions(e,i);2===m&&o&&!1===o.preserve&&(s=JSON.parse(JSON.stringify(s))).forEach((s=>{("blank-pseudo-class"===s.id||"prefers-color-scheme-query"===s.id)&&(s.stage=1)}));const u=prepareFeaturesList(s,n,p).map((s=>formatPolyfillableFeature(s))).filter((s=>0===l||(!(!s[Z]&&!s[Q])||(l<=s.vendors_implementations||(r[s.id]?(i.log(` ${s.id} does not meet the required vendor implementations but has been enabled by options`),!0):(i.log(` ${s.id} with ${s.vendors_implementations} vendor implementations has been disabled`),!1)))))).filter((s=>{const e=s.stage>=m,o=a||!K.includes(s.id),t=!1===r[s.id],n=r[s.id]?r[s.id]:e&&o;return t?i.log(` ${s.id} has been disabled by options`):e?o||i.log(` ${s.id} has been disabled by "enableClientSidePolyfills: false".`):n?i.log(` ${s.id} does not meet the required stage but has been enabled by options`):i.log(` ${s.id} with stage ${s.stage} has been disabled`),n})).map((e=>formatStagedFeature(s,c,r,e,o,i))),d=t(c,{ignoreUnknownVersions:!0});return u.filter((s=>{if(s.id in r)return r[s.id];const e=t(s.browsers,{ignoreUnknownVersions:!0}),o=d.some((s=>e.some((e=>e===s))));return o||i.log(`${s.id} disabled due to browser support`),o}))}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}dumpLogs(s){s&&this.logs.forEach((e=>s.warn(e))),this.resetLogger()}}var ps=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"}];function getPackageNamesToIds(){const s={};return ps.forEach((e=>{s[e.packageName]=e.id})),s}function pluginIdHelp(s,e,o){const t=ps.map((s=>s.id)),i=ps.map((s=>s.packageName)),r=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const a=mostSimilar(s,t),n=mostSimilar(s,i);Math.min(a.distance,n.distance)>10?e.warn(o`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`):a.distance<n.distance?e.warn(o,`Unknown feature: "${s}", did you mean: "${a.mostSimilar}"`):e.warn(o,`Unknown feature: "${s}", did you mean: "${r[n.mostSimilar]}"`)}))}function mostSimilar(s,e){let o="unknown",t=1/0;for(let i=0;i<e.length;i++){const r=levenshteinDistance(s,e[i]);r<t&&(t=r,o=e[i])}return{mostSimilar:o,distance:t}}function levenshteinDistance(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let i=1;i<=s.length;i++)o[t][i]=0===t?i:Math.min(o[t-1][i]+1,o[t][i-1]+1,o[t-1][i-1]+(s[i-1]===e[t-1]?0:1))}return o[e.length][s.length]}const plugin=t=>{const i=new Logger,r=Object(t),a=Object.keys(Object(r.features)),n=r.browsers,p=initializeSharedOptions(r),c=listFeatures(e,r,p,i),l=c.map((s=>s.plugin));!1!==r.autoprefixer&&l.push(s(Object.assign({overrideBrowserslist:n},r.autoprefixer))),l.push(o()),logFeaturesList(c,r,i);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit:function(s,{result:e}){pluginIdHelp(a,s,e),r.debug&&i.dumpLogs(e),i.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};plugin.postcss=!0;export{plugin as default};
1
+ import s from"autoprefixer";import e from"cssdb";import o from"@csstools/postcss-progressive-custom-properties";import t from"browserslist";import i from"postcss-initial";import a from"postcss-pseudo-class-any-link";import r from"css-blank-pseudo";import p from"postcss-page-break";import c from"@csstools/postcss-cascade-layers";import n from"postcss-attribute-case-insensitive";import l from"postcss-clamp";import m from"@csstools/postcss-color-function";import u from"postcss-color-functional-notation";import d from"postcss-custom-media";import f from"postcss-custom-properties";import g from"postcss-custom-selectors";import b from"postcss-dir-pseudo-class";import h from"@csstools/postcss-normalize-display-values";import N from"postcss-double-position-gradients";import v from"@csstools/postcss-logical-float-and-clear";import y from"postcss-focus-visible";import k from"postcss-focus-within";import w from"@csstools/postcss-font-format-keywords";import F from"postcss-font-variant";import S from"postcss-gap-properties";import O from"css-has-pseudo";import $ from"postcss-color-hex-alpha";import x from"@csstools/postcss-hwb-function";import P from"@csstools/postcss-ic-unit";import C from"postcss-image-set-function";import E from"@csstools/postcss-is-pseudo-class";import I from"postcss-lab-function";import B from"postcss-logical";import U from"@csstools/postcss-logical-resize";import _ from"@csstools/postcss-logical-viewport-units";import L from"@csstools/postcss-media-queries-aspect-ratio-number-values";import q from"postcss-media-minmax";import A from"@csstools/postcss-nested-calc";import R from"postcss-nesting";import j from"postcss-selector-not";import M from"@csstools/postcss-oklab-function";import D from"postcss-opacity-percentage";import V from"postcss-overflow-shorthand";import W from"postcss-replace-overflow-wrap";import z from"postcss-place";import T from"css-prefers-color-scheme";import H from"postcss-color-rebeccapurple";import G from"@csstools/postcss-scope-pseudo-class";import K from"@csstools/postcss-stepped-value-functions";import Z from"@csstools/postcss-text-decoration-shorthand";import Q from"@csstools/postcss-trigonometric-functions";import J from"@csstools/postcss-unset-value";const X={"blank-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-blank-pseudo/README-BROWSER.md","focus-visible-pseudo-class":"https://github.com/WICG/focus-visible","focus-within-pseudo-class":"https://github.com/jsxtools/focus-within/blob/master/README-BROWSER.md","has-pseudo-class":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-has-pseudo/README-BROWSER.md","prefers-color-scheme-query":"https://github.com/csstools/postcss-plugins/blob/main/plugins/css-prefers-color-scheme/README-BROWSER.md"},Y=["blank-pseudo-class","focus-visible-pseudo-class","focus-within-pseudo-class","has-pseudo-class","prefers-color-scheme-query"];function logFeaturesList(s,e,o){if(e.debug){o.log("Enabling the following feature(s):");const t=[],i=[];!1!==e.autoprefixer&&i.push(" autoprefixer"),s.forEach((s=>{s.id.startsWith("before")||s.id.startsWith("after")?i.push(` ${s.id} (injected via options)`):i.push(` ${s.id}`),void 0!==X[s.id]&&t.push(s.id)})),i.sort(((s,e)=>s.localeCompare(e))),t.sort(((s,e)=>s.localeCompare(e))),i.forEach((s=>o.log(s))),t.length&&(o.log("These feature(s) need a browser library to work:"),t.forEach((s=>o.log(` ${s}: ${X[s]}`))))}}function initializeSharedOptions(s){if("preserve"in s){const e={};return e.preserve=s.preserve,e}return!1}function clamp(s,e,o){return Math.max(s,Math.min(e,o))}function stageFromOptions(s,e){let o=2;if(void 0===s.stage)return e.log(`Using features from Stage ${o} (default)`),o;if(!1===s.stage)o=5;else{let e=parseInt(s.stage,10);Number.isNaN(e)&&(e=0),o=clamp(0,e,5)}return 5===o?e.log('Stage has been disabled, features will be handled via the "features" option.'):e.log(`Using features from Stage ${o}`),o}const ss=Symbol("insertBefore"),es=Symbol("insertAfter"),os=Symbol("insertOrder"),ts=Symbol("plugin");function getTransformedInsertions(s,e,o){if("insertBefore"!==o&&"insertAfter"!==o)return[];const t="insertBefore"===o?ss:es,i=[];for(const o in e){if(!Object.hasOwnProperty.call(e,o))continue;if(!s.find((s=>s.id===o)))continue;let a=e[o];Array.isArray(a)||(a=[a]);for(let s=0;s<a.length;s++)i.push({id:o,[ts]:a[s],[os]:s,[t]:!0})}return i}var is=["custom-media-queries","custom-properties","environment-variables","image-set-function","media-query-ranges","media-queries-aspect-ratio-number-values","prefers-color-scheme-query","nesting-rules","custom-selectors","any-link-pseudo-class","case-insensitive-attributes","focus-visible-pseudo-class","focus-within-pseudo-class","not-pseudo-class","logical-properties-and-values","dir-pseudo-class","all-property","color-functional-notation","double-position-gradients","hexadecimal-alpha-notation","hwb-function","lab-function","rebeccapurple-color","blank-pseudo-class","break-properties","font-variant-property","is-pseudo-class","scope-pseudo-class","has-pseudo-class","gap-properties","overflow-property","overflow-wrap-property","place-properties","system-ui-font-family","stepped-value-functions","trigonometric-functions","cascade-layers"];function featureIsLess(s,e){return s.id===e.id?s[ss]&&e[ss]||s[es]&&e[es]?clamp(-1,s[os]-e[os],1):s[ss]||e[es]?-1:s[es]||e[ss]?1:0:clamp(-1,is.indexOf(s.id)-is.indexOf(e.id),1)}function postcssSystemUiFont(){return{postcssPlugin:"postcss-system-ui-font",Declaration(s){as.test(s.prop)&&(s.value.includes(ps.join(", "))||(s.value=s.value.replace(cs,ns)))}}}postcssSystemUiFont.postcss=!0;const as=/(?:^(?:-|\\002d){2})|(?:^font(?:-family)?$)/i,rs="[\\f\\n\\r\\x09\\x20]",ps=["system-ui","-apple-system","Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans","sans-serif"],cs=new RegExp(`(^|,|${rs}+)(?:system-ui${rs}*)(?:,${rs}*(?:${ps.join("|")})${rs}*)?(,|$)`,"i"),ns=`$1${ps.join(", ")}$2`,ls=new Map([["all-property",i],["any-link-pseudo-class",a],["blank-pseudo-class",r],["break-properties",p],["cascade-layers",c],["case-insensitive-attributes",n],["clamp",l],["color-function",m],["color-functional-notation",u],["custom-media-queries",d],["custom-properties",f],["custom-selectors",g],["dir-pseudo-class",b],["display-two-values",h],["double-position-gradients",N],["float-clear-logical-values",v],["focus-visible-pseudo-class",y],["focus-within-pseudo-class",k],["font-format-keywords",w],["font-variant-property",F],["gap-properties",S],["has-pseudo-class",O],["hexadecimal-alpha-notation",$],["hwb-function",x],["ic-unit",P],["image-set-function",C],["is-pseudo-class",E],["lab-function",I],["logical-properties-and-values",B],["logical-resize",U],["logical-viewport-units",_],["media-queries-aspect-ratio-number-values",L],["media-query-ranges",q],["nested-calc",A],["nesting-rules",R],["not-pseudo-class",j],["oklab-function",M],["opacity-percentage",D],["overflow-property",V],["overflow-wrap-property",W],["place-properties",z],["prefers-color-scheme-query",T],["rebeccapurple-color",H],["scope-pseudo-class",G],["stepped-value-functions",K],["system-ui-font-family",postcssSystemUiFont],["text-decoration-shorthand",Z],["trigonometric-functions",Q],["unset-value",J]]);function featureIsInsertedOrHasAPlugin(s){return!!s[ss]||(!!s[es]||!!ls.has(s.id))}function prepareFeaturesList(s,e,o){return s.concat(getTransformedInsertions(s,e,"insertBefore"),getTransformedInsertions(s,o,"insertAfter")).filter((s=>featureIsInsertedOrHasAPlugin(s))).sort(((s,e)=>featureIsLess(s,e)))}const ms=["and_chr","and_ff","and_qq","and_uc","android","baidu","chrome","edge","firefox","ie","ie_mob","ios_saf","kaios","op_mini","op_mob","opera","safari","samsung"];function getUnsupportedBrowsersByFeature(s){if(!s)return[];if(!("browser_support"in s))return["> 0%"];const e=[];return ms.forEach((o=>{if("op_mini"===o&&void 0===s.browser_support[o])return void e.push("op_mini all");const t=s.browser_support[o];"string"==typeof t&&/^[0-9|.]+$/.test(t)?e.push(`${o} < ${s.browser_support[o]}`):e.push(`${o} >= 1`)})),e}function getOptionsForBrowsersByFeature(s,e,o,i,a){const r=t(s,{ignoreUnknownVersions:!0});switch(e.id){case"is-pseudo-class":return{onComplexSelector:"warning"};case"nesting-rules":if(needsOptionFor(o.find((s=>"is-pseudo-class"===s.id)),r))return a.log('Disabling :is on "nesting-rules" due to lack of browser support.'),{noIsPseudoSelector:!0};return{};case"any-link-pseudo-class":if(r.find((s=>s.startsWith("ie ")||s.startsWith("edge "))))return a.log('Adding area[href] fallbacks for ":any-link" support in Edge and IE.'),{subFeatures:{areaHrefNeedsFixing:!0}};return{};case"logical-properties-and-values":case"float-clear-logical-values":case"logical-resize":case"logical-viewport-units":return"logical"in i?i.logical:{};default:return{}}}function needsOptionFor(s,e){const o=getUnsupportedBrowsersByFeature(s);return!!e.some((s=>t(o,{ignoreUnknownVersions:!0}).some((e=>e===s))))}function formatPolyfillableFeature(s){const e=getUnsupportedBrowsersByFeature(s);if(s[ss]||s[es]){let o=s.id;return o=s.insertBefore?`before-${o}`:`after-${o}`,{browsers:e,vendors_implementations:s.vendors_implementations,plugin:s[ts],id:o,stage:6}}return{browsers:e,vendors_implementations:s.vendors_implementations,plugin:ls.get(s.id),id:s.id,stage:s.stage}}function formatStagedFeature(s,e,o,t,i,a,r){let p,c;return p=getOptionsForBrowsersByFeature(e,t,s,a,r),!0===o[t.id]?i&&(p=Object.assign({},p,i)):p=i?Object.assign({},p,i,o[t.id]):Object.assign({},p,o[t.id]),p.enableProgressiveCustomProperties=!1,"all-property"===t.id&&"preserve"in p&&(p.replace=p.preserve),"overflow-wrap-property"===t.id&&"preserve"in p&&(p.method=p.preserve?"copy":"replace"),c=t.plugin.postcss&&"function"==typeof t.plugin?t.plugin(p):t.plugin&&t.plugin.default&&"function"==typeof t.plugin.default&&t.plugin.default.postcss?t.plugin.default(p):t.plugin,{browsers:t.browsers,vendors_implementations:t.vendors_implementations,plugin:c,pluginOptions:p,id:t.id}}function intOrZero(s){const e=parseInt(s,10);return Number.isNaN(e)?0:e}function listFeatures(s,e,o,i){const a=Object(e.features),r="enableClientSidePolyfills"in e&&e.enableClientSidePolyfills,p=Object(e.insertBefore),c=Object(e.insertAfter),n=e.browsers,l=clamp(0,intOrZero(e.minimumVendorImplementations),3);l>0&&i.log(`Using features with ${l} or more vendor implementations`);const m=stageFromOptions(e,i),u=prepareFeaturesList(s,p,c).map((s=>formatPolyfillableFeature(s))).filter((s=>0===l||(!(!s[ss]&&!s[es])||(l<=s.vendors_implementations||(a[s.id]?(i.log(` ${s.id} does not meet the required vendor implementations but has been enabled by options`),!0):(i.log(` ${s.id} with ${s.vendors_implementations} vendor implementations has been disabled`),!1)))))).filter((s=>{const e=s.stage>=m,o=r||!Y.includes(s.id),t=!1===a[s.id],p=a[s.id]?a[s.id]:e&&o;return t?i.log(` ${s.id} has been disabled by options`):e?o||i.log(` ${s.id} has been disabled by "enableClientSidePolyfills: false".`):p?i.log(` ${s.id} does not meet the required stage but has been enabled by options`):i.log(` ${s.id} with stage ${s.stage} has been disabled`),p})).map((t=>formatStagedFeature(s,n,a,t,o,e,i))),d=t(n,{ignoreUnknownVersions:!0});return u.filter((s=>{if(s.id in a)return a[s.id];const e=t(s.browsers,{ignoreUnknownVersions:!0}),o=d.some((s=>e.some((e=>e===s))));return o||i.log(`${s.id} disabled due to browser support`),o}))}class Logger{constructor(){this.logs=[]}log(s){this.logs.push(s)}resetLogger(){this.logs.length=0}dumpLogs(s){s&&this.logs.forEach((e=>s.warn(e))),this.resetLogger()}}var us=[{packageName:"css-blank-pseudo",id:"blank-pseudo-class",importName:"postcssBlankPseudo"},{packageName:"css-has-pseudo",id:"has-pseudo-class",importName:"postcssHasPseudo"},{packageName:"css-prefers-color-scheme",id:"prefers-color-scheme-query",importName:"postcssPrefersColorScheme"},{packageName:"postcss-attribute-case-insensitive",id:"case-insensitive-attributes",importName:"postcssAttributeCaseInsensitive"},{packageName:"postcss-clamp",id:"clamp",importName:"postcssClamp"},{packageName:"@csstools/postcss-color-function",id:"color-function",importName:"postcssColorFunction"},{packageName:"postcss-color-functional-notation",id:"color-functional-notation",importName:"postcssColorFunctionalNotation"},{packageName:"postcss-color-hex-alpha",id:"hexadecimal-alpha-notation",importName:"postcssColorHexAlpha"},{packageName:"postcss-color-rebeccapurple",id:"rebeccapurple-color",importName:"postcssColorRebeccapurple"},{packageName:"postcss-custom-media",id:"custom-media-queries",importName:"postcssCustomMedia"},{packageName:"postcss-custom-properties",id:"custom-properties",importName:"postcssCustomProperties"},{packageName:"postcss-custom-selectors",id:"custom-selectors",importName:"postcssCustomSelectors"},{packageName:"postcss-dir-pseudo-class",id:"dir-pseudo-class",importName:"postcssDirPseudoClass"},{packageName:"postcss-double-position-gradients",id:"double-position-gradients",importName:"postcssDoublePositionGradients"},{packageName:"postcss-focus-visible",id:"focus-visible-pseudo-class",importName:"postcssFocusVisible"},{packageName:"postcss-focus-within",id:"focus-within-pseudo-class",importName:"postcssFocusWithin"},{packageName:"@csstools/postcss-font-format-keywords",id:"font-format-keywords",importName:"postcssFontFormatKeywords"},{packageName:"postcss-font-variant",id:"font-variant-property",importName:"postcssFontVariant"},{packageName:"postcss-gap-properties",id:"gap-properties",importName:"postcssGapProperties"},{packageName:"@csstools/postcss-hwb-function",id:"hwb-function",importName:"postcssHWBFunction"},{packageName:"@csstools/postcss-ic-unit",id:"ic-unit",importName:"postcssICUnit"},{packageName:"postcss-image-set-function",id:"image-set-function",importName:"postcssImageSetFunction"},{packageName:"postcss-initial",id:"all-property",importName:"postcssInitial"},{packageName:"@csstools/postcss-is-pseudo-class",id:"is-pseudo-class",importName:"postcssIsPseudoClass"},{packageName:"@csstools/postcss-scope-pseudo-class",id:"scope-pseudo-class",importName:"postcssScopePseudoClass"},{packageName:"postcss-lab-function",id:"lab-function",importName:"postcssLabFunction"},{packageName:"postcss-logical",id:"logical-properties-and-values",importName:"postcssLogical"},{packageName:"@csstools/postcss-logical-float-and-clear",id:"float-clear-logical-values",importName:"postcssLogicalFloatAndClear"},{packageName:"@csstools/postcss-logical-resize",id:"logical-resize",importName:"postcssLogicalResize"},{packageName:"@csstools/postcss-logical-viewport-units",id:"logical-viewport-units",importName:"postcssLogicalViewportUnits"},{packageName:"postcss-media-minmax",id:"media-query-ranges",importName:"postcssMediaMinmax"},{packageName:"@csstools/postcss-media-queries-aspect-ratio-number-values",id:"media-queries-aspect-ratio-number-values",importName:"postcssMediaQueriesAspectRatioNumberValues"},{packageName:"postcss-nesting",id:"nesting-rules",importName:"postcssNesting"},{packageName:"@csstools/postcss-normalize-display-values",id:"display-two-values",importName:"postcssNormalizeDisplayValues"},{packageName:"@csstools/postcss-oklab-function",id:"oklab-function",importName:"postcssOKLabFunction"},{packageName:"postcss-opacity-percentage",id:"opacity-percentage",importName:"postcssOpacityPercentage"},{packageName:"postcss-overflow-shorthand",id:"overflow-property",importName:"postcssOverflowShorthand"},{packageName:"postcss-page-break",id:"break-properties",importName:"postcssPageBreak"},{packageName:"postcss-place",id:"place-properties",importName:"postcssPlace"},{packageName:"postcss-pseudo-class-any-link",id:"any-link-pseudo-class",importName:"postcssPseudoClassAnyLink"},{packageName:"postcss-replace-overflow-wrap",id:"overflow-wrap-property",importName:"postcssReplaceOverflowWrap"},{packageName:"postcss-selector-not",id:"not-pseudo-class",importName:"postcssSelectorNot"},{packageName:"@csstools/postcss-stepped-value-functions",id:"stepped-value-functions",importName:"postcssSteppedValueFunctions"},{packageName:"postcss-system-ui-font-family",importedPackage:"../patch/postcss-system-ui-font-family.mjs",id:"system-ui-font-family",importName:"postcssFontFamilySystemUI"},{packageName:"@csstools/postcss-unset-value",id:"unset-value",importName:"postcssUnsetValue"},{packageName:"@csstools/postcss-cascade-layers",id:"cascade-layers",importName:"postcssCascadeLayers"},{packageName:"@csstools/postcss-trigonometric-functions",id:"trigonometric-functions",importName:"postcssTrigonometricFunctions"},{packageName:"@csstools/postcss-nested-calc",id:"nested-calc",importName:"postcssNestedCalc"},{packageName:"@csstools/postcss-text-decoration-shorthand",id:"text-decoration-shorthand",importName:"postcssTextDecorationShorthand"}];function getPackageNamesToIds(){const s={};return us.forEach((e=>{s[e.packageName]=e.id})),s}function pluginIdHelp(s,e,o){const t=us.map((s=>s.id)),i=us.map((s=>s.packageName)),a=getPackageNamesToIds();s.forEach((s=>{if(t.includes(s))return;const r=mostSimilar(s,t),p=mostSimilar(s,i);Math.min(r.distance,p.distance)>10?e.warn(o`Unknown feature: "${s}", see the list of features https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md`):r.distance<p.distance?e.warn(o,`Unknown feature: "${s}", did you mean: "${r.mostSimilar}"`):e.warn(o,`Unknown feature: "${s}", did you mean: "${a[p.mostSimilar]}"`)}))}function mostSimilar(s,e){let o="unknown",t=1/0;for(let i=0;i<e.length;i++){const a=levenshteinDistance(s,e[i]);a<t&&(t=a,o=e[i])}return{mostSimilar:o,distance:t}}function levenshteinDistance(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let i=1;i<=s.length;i++)o[t][i]=0===t?i:Math.min(o[t-1][i]+1,o[t][i-1]+1,o[t-1][i-1]+(s[i-1]===e[t-1]?0:1))}return o[e.length][s.length]}const creator=t=>{const i=new Logger,a=Object(t),r=Object.keys(Object(a.features)),p=a.browsers,c=initializeSharedOptions(a),n=listFeatures(e,a,c,i),l=n.map((s=>s.plugin));!1!==a.autoprefixer&&l.push(s(Object.assign({overrideBrowserslist:p},a.autoprefixer))),l.push(o()),logFeaturesList(n,a,i);const internalPlugin=()=>({postcssPlugin:"postcss-preset-env",OnceExit:function(s,{result:e}){pluginIdHelp(r,s,e),a.debug&&i.dumpLogs(e),i.resetLogger()}});return internalPlugin.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...l,internalPlugin()]}};creator.postcss=!0;export{creator as default};
@@ -0,0 +1,82 @@
1
+ import type autoprefixer from 'autoprefixer';
2
+ import { pluginsOptions } from './plugins/plugins-options';
3
+ export declare enum DirectionFlow {
4
+ TopToBottom = "top-to-bottom",
5
+ BottomToTop = "bottom-to-top",
6
+ RightToLeft = "right-to-left",
7
+ LeftToRight = "left-to-right"
8
+ }
9
+ export type pluginOptions = {
10
+ /**
11
+ * Determine which CSS features to polyfill,
12
+ * based upon their process in becoming web standards.
13
+ * default: 2
14
+ */
15
+ stage?: number | false;
16
+ /**
17
+ * Determine which CSS features to polyfill,
18
+ * based their implementation status.
19
+ * default: 0
20
+ */
21
+ minimumVendorImplementations?: number;
22
+ /**
23
+ * Enable any feature that would need an extra browser library to be loaded into the page for it to work.
24
+ * default: false
25
+ */
26
+ enableClientSidePolyfills?: boolean;
27
+ /**
28
+ * PostCSS Preset Env supports any standard browserslist configuration,
29
+ * which can be a `.browserslistrc` file,
30
+ * a `browserslist` key in `package.json`,
31
+ * or `browserslist` environment variables.
32
+ *
33
+ * The `browsers` option should only be used when a standard browserslist configuration is not available.
34
+ */
35
+ browsers?: string | readonly string[] | null;
36
+ /**
37
+ * Determine whether all plugins should receive a `preserve` option,
38
+ * which may preserve or remove the original and now polyfilled CSS.
39
+ * Each plugin has it's own default, some true, others false.
40
+ * default: _not set_
41
+ */
42
+ preserve?: boolean;
43
+ /**
44
+ * [Configure autoprefixer](https://github.com/postcss/autoprefixer#options)
45
+ */
46
+ autoprefixer?: autoprefixer.Options;
47
+ /**
48
+ * Enable or disable specific polyfills by ID.
49
+ * Passing `true` to a specific [feature ID](https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md) will enable its polyfill,
50
+ * while passing `false` will disable it.
51
+ *
52
+ * Passing an object to a specific feature ID will both enable and configure it.
53
+ */
54
+ features?: pluginsOptions;
55
+ /**
56
+ * The `insertBefore` key allows you to insert other PostCSS plugins into the chain.
57
+ * This is only useful if you are also using sugary PostCSS plugins that must execute before certain polyfills.
58
+ * `insertBefore` supports chaining one or multiple plugins.
59
+ */
60
+ insertBefore?: Record<string, unknown>;
61
+ /**
62
+ * The `insertAfter` key allows you to insert other PostCSS plugins into the chain.
63
+ * This is only useful if you are also using sugary PostCSS plugins that must execute after certain polyfills.
64
+ * `insertAfter` supports chaining one or multiple plugins.
65
+ */
66
+ insertAfter?: Record<string, unknown>;
67
+ /**
68
+ * Enable debugging messages to stdout giving insights into which features have been enabled/disabled and why.
69
+ * default: false
70
+ */
71
+ debug?: boolean;
72
+ /**
73
+ * The `logical` object allows to configure all plugins related to logical document flow at once.
74
+ * It accepts the same options as each plugin: `inlineDirection` and `blockDirection`.
75
+ */
76
+ logical?: {
77
+ /** Set the inline flow direction. default: left-to-right */
78
+ inlineDirection?: DirectionFlow;
79
+ /** Set the block flow direction. default: top-to-bottom */
80
+ blockDirection?: DirectionFlow;
81
+ };
82
+ };
@@ -0,0 +1,149 @@
1
+ import type { pluginOptions as postcssInitial } from '../types/postcss-initial/plugin-options';
2
+ import type { pluginOptions as postcssPseudoClassAnyLink } from 'postcss-pseudo-class-any-link';
3
+ import type { pluginOptions as postcssBlankPseudo } from 'css-blank-pseudo';
4
+ import type { pluginOptions as postcssPageBreak } from '../types/postcss-page-break/plugin-options';
5
+ import type { pluginOptions as postcssCascadeLayers } from '@csstools/postcss-cascade-layers';
6
+ import type { pluginOptions as postcssAttributeCaseInsensitive } from 'postcss-attribute-case-insensitive';
7
+ import type { pluginOptions as postcssClamp } from '../types/postcss-clamp/plugin-options';
8
+ import type { pluginOptions as postcssColorFunction } from '@csstools/postcss-color-function';
9
+ import type { pluginOptions as postcssColorFunctionalNotation } from 'postcss-color-functional-notation';
10
+ import type { pluginOptions as postcssCustomMedia } from 'postcss-custom-media';
11
+ import type { pluginOptions as postcssCustomProperties } from 'postcss-custom-properties';
12
+ import type { pluginOptions as postcssCustomSelectors } from 'postcss-custom-selectors';
13
+ import type { pluginOptions as postcssDirPseudoClass } from 'postcss-dir-pseudo-class';
14
+ import type { pluginOptions as postcssNormalizeDisplayValues } from '@csstools/postcss-normalize-display-values';
15
+ import type { pluginOptions as postcssDoublePositionGradients } from 'postcss-double-position-gradients';
16
+ import type { pluginOptions as postcssLogicalFloatAndClear } from '@csstools/postcss-logical-float-and-clear';
17
+ import type { pluginOptions as postcssFocusVisible } from 'postcss-focus-visible';
18
+ import type { pluginOptions as postcssFocusWithin } from 'postcss-focus-within';
19
+ import type { pluginOptions as postcssFontFormatKeywords } from '@csstools/postcss-font-format-keywords';
20
+ import type { pluginOptions as postcssFontVariant } from '../types/postcss-font-variant/plugin-options';
21
+ import type { pluginOptions as postcssGapProperties } from 'postcss-gap-properties';
22
+ import type { pluginOptions as postcssHasPseudo } from 'css-has-pseudo';
23
+ import type { pluginOptions as postcssColorHexAlpha } from 'postcss-color-hex-alpha';
24
+ import type { pluginOptions as postcssHWBFunction } from '@csstools/postcss-hwb-function';
25
+ import type { pluginOptions as postcssICUnit } from '@csstools/postcss-ic-unit';
26
+ import type { pluginOptions as postcssImageSetFunction } from 'postcss-image-set-function';
27
+ import type { pluginOptions as postcssIsPseudoClass } from '@csstools/postcss-is-pseudo-class';
28
+ import type { pluginOptions as postcssLabFunction } from 'postcss-lab-function';
29
+ import type { pluginOptions as postcssLogical } from 'postcss-logical';
30
+ import type { pluginOptions as postcssLogicalResize } from '@csstools/postcss-logical-resize';
31
+ import type { pluginOptions as postcssLogicalViewportUnits } from '@csstools/postcss-logical-viewport-units';
32
+ import type { pluginOptions as postcssMediaQueriesAspectRatioNumberValues } from '@csstools/postcss-media-queries-aspect-ratio-number-values';
33
+ import type { pluginOptions as postcssMediaMinmax } from '../types/postcss-media-minmax/plugin-options';
34
+ import type { pluginOptions as postcssNestedCalc } from '@csstools/postcss-nested-calc';
35
+ import type { pluginOptions as postcssNesting } from 'postcss-nesting';
36
+ import type { pluginOptions as postcssSelectorNot } from 'postcss-selector-not';
37
+ import type { pluginOptions as postcssOKLabFunction } from '@csstools/postcss-oklab-function';
38
+ import type { pluginOptions as postcssOpacityPercentage } from '../types/postcss-opacity-percentage/plugin-options';
39
+ import type { pluginOptions as postcssOverflowShorthand } from 'postcss-overflow-shorthand';
40
+ import type { pluginOptions as postcssReplaceOverflowWrap } from '../types/postcss-replace-overflow-wrap/plugin-options';
41
+ import type { pluginOptions as postcssPlace } from 'postcss-place';
42
+ import type { pluginOptions as postcssPrefersColorScheme } from 'css-prefers-color-scheme';
43
+ import type { pluginOptions as postcssColorRebeccapurple } from 'postcss-color-rebeccapurple';
44
+ import type { pluginOptions as postcssScopePseudoClass } from '@csstools/postcss-scope-pseudo-class';
45
+ import type { pluginOptions as postcssSteppedValueFunctions } from '@csstools/postcss-stepped-value-functions';
46
+ import type { pluginOptions as postcssFontFamilySystemUI } from '../types/postcss-system-ui-font-family/plugin-options';
47
+ import type { pluginOptions as postcssTextDecorationShorthand } from '@csstools/postcss-text-decoration-shorthand';
48
+ import type { pluginOptions as postcssTrigonometricFunctions } from '@csstools/postcss-trigonometric-functions';
49
+ import type { pluginOptions as postcssUnsetValue } from '@csstools/postcss-unset-value';
50
+ export type pluginsOptions = {
51
+ /** plugin options for "postcss-initial" */
52
+ 'all-property'?: postcssInitial | boolean;
53
+ /** plugin options for "postcss-pseudo-class-any-link" */
54
+ 'any-link-pseudo-class'?: postcssPseudoClassAnyLink | boolean;
55
+ /** plugin options for "css-blank-pseudo" */
56
+ 'blank-pseudo-class'?: postcssBlankPseudo | boolean;
57
+ /** plugin options for "postcss-page-break" */
58
+ 'break-properties'?: postcssPageBreak | boolean;
59
+ /** plugin options for "@csstools/postcss-cascade-layers" */
60
+ 'cascade-layers'?: postcssCascadeLayers | boolean;
61
+ /** plugin options for "postcss-attribute-case-insensitive" */
62
+ 'case-insensitive-attributes'?: postcssAttributeCaseInsensitive | boolean;
63
+ /** plugin options for "postcss-clamp" */
64
+ 'clamp'?: postcssClamp | boolean;
65
+ /** plugin options for "@csstools/postcss-color-function" */
66
+ 'color-function'?: postcssColorFunction | boolean;
67
+ /** plugin options for "postcss-color-functional-notation" */
68
+ 'color-functional-notation'?: postcssColorFunctionalNotation | boolean;
69
+ /** plugin options for "postcss-custom-media" */
70
+ 'custom-media-queries'?: postcssCustomMedia | boolean;
71
+ /** plugin options for "postcss-custom-properties" */
72
+ 'custom-properties'?: postcssCustomProperties | boolean;
73
+ /** plugin options for "postcss-custom-selectors" */
74
+ 'custom-selectors'?: postcssCustomSelectors | boolean;
75
+ /** plugin options for "postcss-dir-pseudo-class" */
76
+ 'dir-pseudo-class'?: postcssDirPseudoClass | boolean;
77
+ /** plugin options for "@csstools/postcss-normalize-display-values" */
78
+ 'display-two-values'?: postcssNormalizeDisplayValues | boolean;
79
+ /** plugin options for "postcss-double-position-gradients" */
80
+ 'double-position-gradients'?: postcssDoublePositionGradients | boolean;
81
+ /** plugin options for "@csstools/postcss-logical-float-and-clear" */
82
+ 'float-clear-logical-values'?: postcssLogicalFloatAndClear | boolean;
83
+ /** plugin options for "postcss-focus-visible" */
84
+ 'focus-visible-pseudo-class'?: postcssFocusVisible | boolean;
85
+ /** plugin options for "postcss-focus-within" */
86
+ 'focus-within-pseudo-class'?: postcssFocusWithin | boolean;
87
+ /** plugin options for "@csstools/postcss-font-format-keywords" */
88
+ 'font-format-keywords'?: postcssFontFormatKeywords | boolean;
89
+ /** plugin options for "postcss-font-variant" */
90
+ 'font-variant-property'?: postcssFontVariant | boolean;
91
+ /** plugin options for "postcss-gap-properties" */
92
+ 'gap-properties'?: postcssGapProperties | boolean;
93
+ /** plugin options for "css-has-pseudo" */
94
+ 'has-pseudo-class'?: postcssHasPseudo | boolean;
95
+ /** plugin options for "postcss-color-hex-alpha" */
96
+ 'hexadecimal-alpha-notation'?: postcssColorHexAlpha | boolean;
97
+ /** plugin options for "@csstools/postcss-hwb-function" */
98
+ 'hwb-function'?: postcssHWBFunction | boolean;
99
+ /** plugin options for "@csstools/postcss-ic-unit" */
100
+ 'ic-unit'?: postcssICUnit | boolean;
101
+ /** plugin options for "postcss-image-set-function" */
102
+ 'image-set-function'?: postcssImageSetFunction | boolean;
103
+ /** plugin options for "@csstools/postcss-is-pseudo-class" */
104
+ 'is-pseudo-class'?: postcssIsPseudoClass | boolean;
105
+ /** plugin options for "postcss-lab-function" */
106
+ 'lab-function'?: postcssLabFunction | boolean;
107
+ /** plugin options for "postcss-logical" */
108
+ 'logical-properties-and-values'?: postcssLogical | boolean;
109
+ /** plugin options for "@csstools/postcss-logical-resize" */
110
+ 'logical-resize'?: postcssLogicalResize | boolean;
111
+ /** plugin options for "@csstools/postcss-logical-viewport-units" */
112
+ 'logical-viewport-units'?: postcssLogicalViewportUnits | boolean;
113
+ /** plugin options for "@csstools/postcss-media-queries-aspect-ratio-number-values" */
114
+ 'media-queries-aspect-ratio-number-values'?: postcssMediaQueriesAspectRatioNumberValues | boolean;
115
+ /** plugin options for "postcss-media-minmax" */
116
+ 'media-query-ranges'?: postcssMediaMinmax | boolean;
117
+ /** plugin options for "@csstools/postcss-nested-calc" */
118
+ 'nested-calc'?: postcssNestedCalc | boolean;
119
+ /** plugin options for "postcss-nesting" */
120
+ 'nesting-rules'?: postcssNesting | boolean;
121
+ /** plugin options for "postcss-selector-not" */
122
+ 'not-pseudo-class'?: postcssSelectorNot | boolean;
123
+ /** plugin options for "@csstools/postcss-oklab-function" */
124
+ 'oklab-function'?: postcssOKLabFunction | boolean;
125
+ /** plugin options for "postcss-opacity-percentage" */
126
+ 'opacity-percentage'?: postcssOpacityPercentage | boolean;
127
+ /** plugin options for "postcss-overflow-shorthand" */
128
+ 'overflow-property'?: postcssOverflowShorthand | boolean;
129
+ /** plugin options for "postcss-replace-overflow-wrap" */
130
+ 'overflow-wrap-property'?: postcssReplaceOverflowWrap | boolean;
131
+ /** plugin options for "postcss-place" */
132
+ 'place-properties'?: postcssPlace | boolean;
133
+ /** plugin options for "css-prefers-color-scheme" */
134
+ 'prefers-color-scheme-query'?: postcssPrefersColorScheme | boolean;
135
+ /** plugin options for "postcss-color-rebeccapurple" */
136
+ 'rebeccapurple-color'?: postcssColorRebeccapurple | boolean;
137
+ /** plugin options for "@csstools/postcss-scope-pseudo-class" */
138
+ 'scope-pseudo-class'?: postcssScopePseudoClass | boolean;
139
+ /** plugin options for "@csstools/postcss-stepped-value-functions" */
140
+ 'stepped-value-functions'?: postcssSteppedValueFunctions | boolean;
141
+ /** plugin options for "postcss-system-ui-font-family" */
142
+ 'system-ui-font-family'?: postcssFontFamilySystemUI | boolean;
143
+ /** plugin options for "@csstools/postcss-text-decoration-shorthand" */
144
+ 'text-decoration-shorthand'?: postcssTextDecorationShorthand | boolean;
145
+ /** plugin options for "@csstools/postcss-trigonometric-functions" */
146
+ 'trigonometric-functions'?: postcssTrigonometricFunctions | boolean;
147
+ /** plugin options for "@csstools/postcss-unset-value" */
148
+ 'unset-value'?: postcssUnsetValue | boolean;
149
+ };
@@ -0,0 +1,10 @@
1
+ /** postcss-clamp plugin options */
2
+ export type pluginOptions = {
3
+ /** Preserve the original notation. default: false */
4
+ preserve?: boolean;
5
+ /**
6
+ * The precalculate option determines whether values with the same unit should be precalculated.
7
+ * default: false
8
+ */
9
+ precalculate?: boolean;
10
+ };
@@ -0,0 +1,2 @@
1
+ /** postcss-font-variant plugin options */
2
+ export type pluginOptions = Record<string, never>;
@@ -0,0 +1,11 @@
1
+ /** postcss-initial plugin options */
2
+ export type pluginOptions = {
3
+ /** Preserve the original notation. default: false */
4
+ preserve?: boolean;
5
+ /**
6
+ * Describes what subset of rules should be unsetted with all property (to reduce code weight).
7
+ * Possible subsets: all, inherited.
8
+ * default: 'all'.
9
+ * */
10
+ reset?: string;
11
+ };
@@ -0,0 +1,2 @@
1
+ /** postcss-media-minmax plugin options */
2
+ export type pluginOptions = Record<string, never>;
@@ -0,0 +1,5 @@
1
+ /** postcss-opacity-percentage plugin options */
2
+ export type pluginOptions = {
3
+ /** Preserve the original notation. default: false */
4
+ preserve?: boolean;
5
+ };
@@ -0,0 +1,2 @@
1
+ /** postcss-page-break plugin options */
2
+ export type pluginOptions = Record<string, never>;
@@ -0,0 +1,5 @@
1
+ /** postcss-replace-overflow-wrap plugin options */
2
+ export type pluginOptions = {
3
+ /** Preserve the original notation. default: false */
4
+ preserve?: boolean;
5
+ };
@@ -0,0 +1,2 @@
1
+ /** postcss-system-ui-font-family plugin options */
2
+ export type pluginOptions = Record<string, never>;
package/package.json CHANGED
@@ -1,8 +1,22 @@
1
1
  {
2
2
  "name": "postcss-preset-env",
3
3
  "description": "Convert modern CSS into something browsers understand",
4
- "version": "8.0.0-alpha.1",
5
- "author": "Jonathan Neal <jonathantneal@hotmail.com>",
4
+ "version": "8.0.0",
5
+ "contributors": [
6
+ {
7
+ "name": "Antonio Laguna",
8
+ "email": "antonio@laguna.es",
9
+ "url": "https://antonio.laguna.es"
10
+ },
11
+ {
12
+ "name": "Romain Menke",
13
+ "email": "romainmenke@gmail.com"
14
+ },
15
+ {
16
+ "name": "Jonathan Neal",
17
+ "email": "jonathantneal@hotmail.com"
18
+ }
19
+ ],
6
20
  "license": "CC0-1.0",
7
21
  "funding": {
8
22
  "type": "opencollective",
@@ -13,6 +27,7 @@
13
27
  },
14
28
  "main": "dist/index.cjs",
15
29
  "module": "dist/index.mjs",
30
+ "types": "dist/index.d.ts",
16
31
  "exports": {
17
32
  ".": {
18
33
  "import": "./dist/index.mjs",
@@ -27,66 +42,70 @@
27
42
  "dist"
28
43
  ],
29
44
  "dependencies": {
30
- "@csstools/postcss-cascade-layers": "^2.0.0",
31
- "@csstools/postcss-color-function": "^1.1.1",
32
- "@csstools/postcss-font-format-keywords": "^1.0.1",
33
- "@csstools/postcss-hwb-function": "^1.0.2",
34
- "@csstools/postcss-ic-unit": "^1.0.1",
35
- "@csstools/postcss-is-pseudo-class": "^2.0.7",
36
- "@csstools/postcss-nested-calc": "^1.0.0",
37
- "@csstools/postcss-normalize-display-values": "^1.0.1",
38
- "@csstools/postcss-oklab-function": "^1.1.1",
39
- "@csstools/postcss-progressive-custom-properties": "^1.3.0",
40
- "@csstools/postcss-scope-pseudo-class": "^1.0.0",
41
- "@csstools/postcss-stepped-value-functions": "^1.0.1",
42
- "@csstools/postcss-text-decoration-shorthand": "^1.0.0",
43
- "@csstools/postcss-trigonometric-functions": "^1.0.2",
44
- "@csstools/postcss-unset-value": "^1.0.2",
45
+ "@csstools/postcss-cascade-layers": "^3.0.0",
46
+ "@csstools/postcss-color-function": "^2.0.0",
47
+ "@csstools/postcss-font-format-keywords": "^2.0.0",
48
+ "@csstools/postcss-hwb-function": "^2.0.0",
49
+ "@csstools/postcss-ic-unit": "^2.0.0",
50
+ "@csstools/postcss-is-pseudo-class": "^3.0.0",
51
+ "@csstools/postcss-logical-float-and-clear": "^1.0.0",
52
+ "@csstools/postcss-logical-resize": "^1.0.0",
53
+ "@csstools/postcss-logical-viewport-units": "^1.0.0",
54
+ "@csstools/postcss-media-queries-aspect-ratio-number-values": "^1.0.0",
55
+ "@csstools/postcss-nested-calc": "^2.0.0",
56
+ "@csstools/postcss-normalize-display-values": "^2.0.0",
57
+ "@csstools/postcss-oklab-function": "^2.0.0",
58
+ "@csstools/postcss-progressive-custom-properties": "^2.0.0",
59
+ "@csstools/postcss-scope-pseudo-class": "^2.0.0",
60
+ "@csstools/postcss-stepped-value-functions": "^2.0.0",
61
+ "@csstools/postcss-text-decoration-shorthand": "^2.0.0",
62
+ "@csstools/postcss-trigonometric-functions": "^2.0.0",
63
+ "@csstools/postcss-unset-value": "^2.0.0",
45
64
  "autoprefixer": "^10.4.13",
46
65
  "browserslist": "^4.21.4",
47
- "css-blank-pseudo": "^4.1.1",
48
- "css-has-pseudo": "^4.0.1",
49
- "css-prefers-color-scheme": "^7.0.1",
50
- "cssdb": "^7.1.0",
51
- "postcss-attribute-case-insensitive": "^5.0.2",
66
+ "css-blank-pseudo": "^5.0.0",
67
+ "css-has-pseudo": "^5.0.0",
68
+ "css-prefers-color-scheme": "^8.0.0",
69
+ "cssdb": "^7.4.0",
70
+ "postcss-attribute-case-insensitive": "^6.0.0",
52
71
  "postcss-clamp": "^4.1.0",
53
- "postcss-color-functional-notation": "^4.2.4",
54
- "postcss-color-hex-alpha": "^8.0.4",
55
- "postcss-color-rebeccapurple": "^7.1.1",
56
- "postcss-custom-media": "^9.0.0",
57
- "postcss-custom-properties": "^13.0.0",
58
- "postcss-custom-selectors": "^7.0.0",
59
- "postcss-dir-pseudo-class": "^6.0.5",
60
- "postcss-double-position-gradients": "^3.1.2",
61
- "postcss-focus-visible": "^7.1.0",
62
- "postcss-focus-within": "^6.1.1",
72
+ "postcss-color-functional-notation": "^5.0.0",
73
+ "postcss-color-hex-alpha": "^9.0.0",
74
+ "postcss-color-rebeccapurple": "^8.0.0",
75
+ "postcss-custom-media": "^9.1.0",
76
+ "postcss-custom-properties": "^13.1.0",
77
+ "postcss-custom-selectors": "^7.1.0",
78
+ "postcss-dir-pseudo-class": "^7.0.0",
79
+ "postcss-double-position-gradients": "^4.0.0",
80
+ "postcss-focus-visible": "^8.0.0",
81
+ "postcss-focus-within": "^7.0.0",
63
82
  "postcss-font-variant": "^5.0.0",
64
- "postcss-gap-properties": "^3.0.5",
65
- "postcss-image-set-function": "^4.0.7",
83
+ "postcss-gap-properties": "^4.0.0",
84
+ "postcss-image-set-function": "^5.0.0",
66
85
  "postcss-initial": "^4.0.1",
67
- "postcss-lab-function": "^4.2.1",
68
- "postcss-logical": "^5.0.4",
86
+ "postcss-lab-function": "^5.0.0",
87
+ "postcss-logical": "^6.0.0",
69
88
  "postcss-media-minmax": "^5.0.0",
70
- "postcss-nesting": "^10.2.0",
71
- "postcss-opacity-percentage": "^1.1.2",
72
- "postcss-overflow-shorthand": "^3.0.4",
89
+ "postcss-nesting": "^11.0.0",
90
+ "postcss-opacity-percentage": "^1.1.3",
91
+ "postcss-overflow-shorthand": "^4.0.0",
73
92
  "postcss-page-break": "^3.0.4",
74
- "postcss-place": "^7.0.5",
75
- "postcss-pseudo-class-any-link": "^7.1.6",
93
+ "postcss-place": "^8.0.0",
94
+ "postcss-pseudo-class-any-link": "^8.0.0",
76
95
  "postcss-replace-overflow-wrap": "^4.0.0",
77
- "postcss-selector-not": "^6.0.1",
96
+ "postcss-selector-not": "^7.0.0",
78
97
  "postcss-value-parser": "^4.2.0"
79
98
  },
80
99
  "peerDependencies": {
81
100
  "postcss": "^8.4"
82
101
  },
83
102
  "devDependencies": {
84
- "postcss-simple-vars": "^7.0.0"
103
+ "postcss-simple-vars": "^7.0.1"
85
104
  },
86
105
  "scripts": {
87
- "prebuild": "node ./scripts/generate-plugins-data.mjs && eslint --fix ./src/plugins/*.mjs",
106
+ "prebuild": "node ./scripts/generate-plugins-data.mjs && eslint --fix ./src/plugins/*.mjs && npm run clean",
88
107
  "build": "rollup -c ../../rollup/default.mjs",
89
- "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
108
+ "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true }); fs.mkdirSync('./dist');\"",
90
109
  "docs": "node ./docs/generate.mjs",
91
110
  "lint": "npm run lint:eslint && npm run lint:package-json",
92
111
  "lint:eslint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",