postcss-merge-rules 8.0.5 → 9.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/package.json CHANGED
@@ -1,18 +1,12 @@
1
1
  {
2
2
  "name": "postcss-merge-rules",
3
- "version": "8.0.5",
3
+ "version": "9.0.0",
4
4
  "description": "Merge CSS rules with PostCSS.",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./types/index.d.ts",
8
8
  "default": "./src/index.js"
9
- },
10
- "./src": "./src/index.js",
11
- "./src/index": "./src/index.js",
12
- "./src/index.js": "./src/index.js",
13
- "./src/lib/ensureCompatibility.js": "./src/lib/ensureCompatibility.js",
14
- "./src/lib/ensureCompatibility": "./src/lib/ensureCompatibility.js",
15
- "./package.json": "./package.json"
9
+ }
16
10
  },
17
11
  "imports": {
18
12
  "#getBrowsersList": {
@@ -45,24 +39,25 @@
45
39
  "dependencies": {
46
40
  "browserslist": "^4.28.8",
47
41
  "caniuse-api": "^4.0.0",
48
- "postcss-selector-parser": "^7.1.5",
49
- "cssnano-utils": "^6.0.4"
42
+ "cssnano-utils": "^7.0.0",
43
+ "postcss-selector-parser": "^7.1.5"
50
44
  },
51
45
  "bugs": {
52
46
  "url": "https://github.com/cssnano/cssnano/issues"
53
47
  },
54
48
  "engines": {
55
- "node": "^22.11.0 || ^24.11.0 || >=26.0"
49
+ "node": "^22.22.3 || ^24.15.0 || >=26.0"
56
50
  },
57
51
  "devDependencies": {
58
52
  "@webref/css": "8.7.2",
59
53
  "postcss": "^8.5.26",
60
- "postcss-simple-vars": "^7.0.1",
61
- "postcss-discard-comments": "^8.0.4"
54
+ "postcss-discard-comments": "^9.0.0",
55
+ "postcss-simple-vars": "^7.0.1"
62
56
  },
63
57
  "peerDependencies": {
64
58
  "postcss": "^8.5.26"
65
59
  },
60
+ "type": "module",
66
61
  "scripts": {
67
62
  "acquire": "node ./script/acquire.mjs",
68
63
  "test": "node --test"
package/src/index.js CHANGED
@@ -1,16 +1,14 @@
1
- 'use strict';
2
-
3
- const getBrowsersList = require('#getBrowsersList');
4
-
5
- /** @import browserslist from 'browserslist' */
6
-
7
- const { sameParent } = require('cssnano-utils');
8
- const {
1
+ import getBrowsersList from '#getBrowsersList';
2
+ import cssnanoUtils from 'cssnano-utils';
3
+ import {
9
4
  ensureCompatibility,
10
5
  sameVendor,
11
6
  noVendor,
12
- } = require('./lib/ensureCompatibility');
13
- const { isConflictingProp } = require('./lib/propertyRelations.js');
7
+ } from './lib/ensureCompatibility.js';
8
+ import { isConflictingProp } from './lib/propertyRelations.js';
9
+
10
+ /** @import browserslist from 'browserslist' */
11
+ const { sameParent } = cssnanoUtils;
14
12
  /** @import {Declaration, Rule} from 'postcss' */
15
13
  /**
16
14
  * @param {Declaration} a
@@ -716,8 +714,8 @@ function pluginCreator(opts = {}) {
716
714
  },
717
715
  };
718
716
  }
719
-
717
+ /** @type {true} */
720
718
  pluginCreator.postcss = true;
721
- module.exports = /** @type {import('postcss').PluginCreator<Options>} */ (
722
- pluginCreator
723
- );
719
+ const moduleExports = pluginCreator;
720
+
721
+ export { moduleExports as default, moduleExports as 'module.exports' };
@@ -1,7 +1,8 @@
1
- 'use strict';
1
+ import { fileURLToPath } from 'node:url';
2
+ import browserslist from 'browserslist';
3
+ import nodepath from 'node:path';
2
4
 
3
- const browserslist = require('browserslist');
4
- const { dirname } = require('node:path');
5
+ const { dirname } = nodepath;
5
6
 
6
7
  /**
7
8
  *
@@ -12,16 +13,13 @@ const { dirname } = require('node:path');
12
13
  * @param {browserslist.Options["env"]} [env]
13
14
  * @returns {string[]}
14
15
  */
15
- module.exports = function computeBrowsersToSupport(
16
- options,
17
- stats,
18
- from,
19
- file,
20
- env
21
- ) {
16
+ function computeBrowsersToSupport(options, stats, from, file, env) {
22
17
  return browserslist(options.overrideBrowserslist, {
23
18
  stats: options.stats || stats,
24
- path: options.path || dirname(from || file || __filename),
19
+ path:
20
+ options.path || dirname(from || file || fileURLToPath(import.meta.url)),
25
21
  env: options.env || env,
26
22
  });
27
- };
23
+ }
24
+
25
+ export default computeBrowsersToSupport;
@@ -1,7 +1,7 @@
1
- 'use strict';
2
- const { isSupported } = require('caniuse-api');
3
- const selectorParser = require('postcss-selector-parser');
1
+ import caniuseApi from 'caniuse-api';
2
+ import selectorParser from 'postcss-selector-parser';
4
3
 
4
+ const { isSupported } = caniuseApi;
5
5
  const simpleSelectorRe = /^#?[-._a-z0-9 ]+$/i;
6
6
 
7
7
  const cssSel2 = 'css-sel2';
@@ -246,4 +246,4 @@ function ensureCompatibility(selectors, browsers, compatibilityCache) {
246
246
  });
247
247
  }
248
248
 
249
- module.exports = { sameVendor, noVendor, pseudoElements, ensureCompatibility };
249
+ export { sameVendor, noVendor, pseudoElements, ensureCompatibility };
@@ -1,6 +1,4 @@
1
- 'use strict';
2
-
3
- module.exports = function () {
1
+ export default (function () {
4
2
  return [
5
3
  'and_chr 150',
6
4
  'and_ff 152',
@@ -32,4 +30,4 @@ module.exports = function () {
32
30
  'samsung 30',
33
31
  'samsung 29',
34
32
  ];
35
- };
33
+ });
@@ -1,6 +1,4 @@
1
- 'use strict';
2
-
3
- const data = require('../data/propertyGroups.json');
1
+ import data from '../data/propertyGroups.json' with { type: 'json' };
4
2
 
5
3
  const vendorPrefixRegex = /^-\w+-/;
6
4
  /**
@@ -167,5 +165,4 @@ function isConflictingProp(propA, propB) {
167
165
  }
168
166
  return false;
169
167
  }
170
-
171
- module.exports = { isConflictingProp };
168
+ export { isConflictingProp };
package/types/index.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- declare const _exports: import("postcss").PluginCreator<Options>;
2
- export = _exports;
3
1
  import type browserslist from 'browserslist';
4
2
  import type { Declaration } from 'postcss';
5
3
  export type RuleMeta = {
@@ -21,4 +19,19 @@ export type AutoprefixerOptions = {
21
19
  };
22
20
  export type BrowserslistOptions = Pick<browserslist.Options, 'stats' | 'path' | 'env'>;
23
21
  export type Options = AutoprefixerOptions & BrowserslistOptions;
22
+ /**
23
+ * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
24
+ * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
25
+ * @typedef {AutoprefixerOptions & BrowserslistOptions} Options
26
+ */
27
+ /**
28
+ * @param {Options} opts
29
+ * @return {import('postcss').Plugin}
30
+ */
31
+ declare function pluginCreator(opts?: Options): import('postcss').Plugin;
32
+ declare namespace pluginCreator {
33
+ var postcss: true;
34
+ }
35
+ declare const moduleExports: typeof pluginCreator;
36
+ export { moduleExports as default, moduleExports as 'module.exports' };
24
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;AAII,OAAQ,KAAA,YAAY,MAAM,cAAc,CAAA;AASxC,OAAQ,KAAA,EAAC,WAAW,EAAO,MAAM,SAAS,CAAA;AAmD3C,YAAkB,QAAQ,GAC1B;;;;IAAqB,SAAS,EAAnB,MAAM,EAAE,CACnB;;;;IAA0B,YAAY,EAA3B,WAAW,EAAE,CACxB;;;;IAAoB,KAAK,EAAd,OAAO,CACpB;CAAA,CAAA;AA8lBE,YAAwD,mBAAmB,GAAjE;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAqB;AAC3E,YAAgE,mBAAmB,GAAzE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAqB;AACnF,YAAqD,OAAO,GAAlD,mBAAmB,GAAG,mBAAmB,CAAS"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AASI,OAAQ,KAAA,YAAY,MAAM,cAAc,CAAA;AAExC,OAAQ,KAAA,EAAC,WAAW,EAAO,MAAM,SAAS,CAAA;AAmD3C,YAAkB,QAAQ,GAC1B;;;;IAAqB,SAAS,EAAnB,MAAM,EAAE,CACnB;;;;IAA0B,YAAY,EAA3B,WAAW,EAAE,CACxB;;;;IAAoB,KAAK,EAAd,OAAO,CACpB;CAAA,CAAA;AA8lBE,YAAwD,mBAAmB,GAAjE;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAqB;AAC3E,YAAgE,mBAAmB,GAAzE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAqB;AACnF,YAAqD,OAAO,GAAlD,mBAAmB,GAAG,mBAAmB,CAAS;AAH/D;;;;GAIG;AAEH;;;GAGG;AACH,iBAAS,aAAa,CAAC,IAAI,GAHhB,OAGqB,GAFpB,OAAO,SAAS,EAAE,MAAM,CAoCnC;kBAlCQ,aAAa;iBAmCX,IAAI;;AAEf,QAAA,MAAM,aAAa,sBAAgB,CAAC;AAEpC,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- export = computeBrowsersToSupport;
1
+ import browserslist from 'browserslist';
2
2
  /**
3
3
  *
4
4
  * @param {{overrideBrowserslist?: string | string[] | undefined, stats?: browserslist.Options["stats"], path?: browserslist.Options["path"], env?: browserslist.Options["env"]}} options
@@ -14,5 +14,5 @@ declare function computeBrowsersToSupport(options: {
14
14
  path?: browserslist.Options["path"];
15
15
  env?: browserslist.Options["env"];
16
16
  }, stats: browserslist.Options["stats"], from: string | undefined, file?: string, env?: browserslist.Options["env"]): string[];
17
- import browserslist = require('browserslist');
17
+ export default computeBrowsersToSupport;
18
18
  //# sourceMappingURL=computeBrowsersToSupport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeBrowsersToSupport.d.ts","sourceRoot":"","sources":["../../src/lib/computeBrowsersToSupport.js"],"names":[],"mappings":";AAKA;;;;;;;;GAQG;0CAED,OAAO,EARE;IAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;CAQtK,EACP,KAAK,EARI,YAAY,CAAC,OAAO,CAAC,OAAO,CAQhC,EACL,IAAI,EARK,MAAM,GAAC,SAQZ,EACJ,IAAI,AARH,CACA,EADQ,MAQL,EACJ,GAAG,AARF,CACA,EADQ,YAAY,CAAC,OAAO,CAAC,KAAK,CAQhC,GAPQ,MAAM,EAAE;OAVf,YAAY,WAAW,cAAc"}
1
+ {"version":3,"file":"computeBrowsersToSupport.d.ts","sourceRoot":"","sources":["../../src/lib/computeBrowsersToSupport.js"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,cAAc,CAAC;AAKxC;;;;;;;;GAQG;AACH,iBAAS,wBAAwB,CAAC,OAAO,EAP9B;IAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;CAOtI,EAAE,KAAK,EANrC,YAAY,CAAC,OAAO,CAAC,OAAO,CAMS,EAAE,IAAI,EAL3C,MAAM,GAAC,SAKoC,EAAE,IAAI,AAJzD,CACA,EADQ,MAIiD,EAAE,GAAG,AAH9D,CACA,EADQ,YAAY,CAAC,OAAO,CAAC,KAAK,CAG4B,GAFpD,MAAM,EAAE,CASpB;eAEc,wBAAwB"}
@@ -1,62 +1,3 @@
1
- declare const _exports: {
2
- sameVendor: typeof sameVendor;
3
- noVendor: typeof noVendor;
4
- pseudoElements: {
5
- ':active': string;
6
- ':after': string;
7
- ':any-link': string;
8
- ':before': string;
9
- ':checked': string;
10
- ':default': string;
11
- ':dir': string;
12
- ':disabled': string;
13
- ':empty': string;
14
- ':enabled': string;
15
- ':first-child': string;
16
- ':first-letter': string;
17
- ':first-line': string;
18
- ':first-of-type': string;
19
- ':focus': string;
20
- ':focus-within': string;
21
- ':focus-visible': string;
22
- ':has': string;
23
- ':hover': string;
24
- ':in-range': string;
25
- ':indeterminate': string;
26
- ':invalid': string;
27
- ':is': string;
28
- ':lang': string;
29
- ':last-child': string;
30
- ':last-of-type': string;
31
- ':link': string;
32
- ':matches': string;
33
- ':not': string;
34
- ':nth-child': string;
35
- ':nth-last-child': string;
36
- ':nth-last-of-type': string;
37
- ':nth-of-type': string;
38
- ':only-child': string;
39
- ':only-of-type': string;
40
- ':optional': string;
41
- ':out-of-range': string;
42
- ':placeholder-shown': string;
43
- ':required': string;
44
- ':root': string;
45
- ':target': string;
46
- '::after': string;
47
- '::backdrop': string;
48
- '::before': string;
49
- '::first-letter': string;
50
- '::first-line': string;
51
- '::marker': string;
52
- '::placeholder': string;
53
- '::selection': string;
54
- ':valid': string;
55
- ':visited': string;
56
- };
57
- ensureCompatibility: typeof ensureCompatibility;
58
- };
59
- export = _exports;
60
1
  /**
61
2
  * @param {string[]} selectorsA
62
3
  * @param {string[]} selectorsB
@@ -68,6 +9,59 @@ declare function sameVendor(selectorsA: string[], selectorsB: string[]): boolean
68
9
  * @return {boolean}
69
10
  */
70
11
  declare function noVendor(selector: string): boolean;
12
+ declare const pseudoElements: {
13
+ ':active': string;
14
+ ':after': string;
15
+ ':any-link': string;
16
+ ':before': string;
17
+ ':checked': string;
18
+ ':default': string;
19
+ ':dir': string;
20
+ ':disabled': string;
21
+ ':empty': string;
22
+ ':enabled': string;
23
+ ':first-child': string;
24
+ ':first-letter': string;
25
+ ':first-line': string;
26
+ ':first-of-type': string;
27
+ ':focus': string;
28
+ ':focus-within': string;
29
+ ':focus-visible': string;
30
+ ':has': string;
31
+ ':hover': string;
32
+ ':in-range': string;
33
+ ':indeterminate': string;
34
+ ':invalid': string;
35
+ ':is': string;
36
+ ':lang': string;
37
+ ':last-child': string;
38
+ ':last-of-type': string;
39
+ ':link': string;
40
+ ':matches': string;
41
+ ':not': string;
42
+ ':nth-child': string;
43
+ ':nth-last-child': string;
44
+ ':nth-last-of-type': string;
45
+ ':nth-of-type': string;
46
+ ':only-child': string;
47
+ ':only-of-type': string;
48
+ ':optional': string;
49
+ ':out-of-range': string;
50
+ ':placeholder-shown': string;
51
+ ':required': string;
52
+ ':root': string;
53
+ ':target': string;
54
+ '::after': string;
55
+ '::backdrop': string;
56
+ '::before': string;
57
+ '::first-letter': string;
58
+ '::first-line': string;
59
+ '::marker': string;
60
+ '::placeholder': string;
61
+ '::selection': string;
62
+ ':valid': string;
63
+ ':visited': string;
64
+ };
71
65
  /**
72
66
  * @param {string[]} selectors
73
67
  * @param{string[]=} browsers
@@ -75,4 +69,5 @@ declare function noVendor(selector: string): boolean;
75
69
  * @return {boolean}
76
70
  */
77
71
  declare function ensureCompatibility(selectors: string[], browsers?: string[] | undefined, compatibilityCache?: Map<string, boolean> | undefined): boolean;
72
+ export { sameVendor, noVendor, pseudoElements, ensureCompatibility };
78
73
  //# sourceMappingURL=ensureCompatibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensureCompatibility.d.ts","sourceRoot":"","sources":["../../src/lib/ensureCompatibility.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA;;;;GAIG;AACH,iBAAS,UAAU,CAAC,UAAU,EAJnB,MAAM,EAIa,EAAE,UAAU,EAH/B,MAAM,EAGyB,GAF9B,OAAO,CAWlB;AAED;;;GAGG;AACH,iBAAS,QAAQ,CAAC,QAAQ,EAHf,MAGe,GAFd,OAAO,CAIlB;AA4GD;;;;;GAKG;AACH,iBAAS,mBAAmB,CAAC,SAAS,EAL3B,MAAM,EAKqB,EAAE,QAAQ,AAJ7C,CACA,EADO,MAAM,EAAE,YAI8B,EAAE,kBAAkB,AAHjE,CACA,EADO,GAAG,CAAC,MAAM,EAAC,OAAO,CAAC,YAGuC,GAFxD,OAAO,CA0ElB"}
1
+ {"version":3,"file":"ensureCompatibility.d.ts","sourceRoot":"","sources":["../../src/lib/ensureCompatibility.js"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,iBAAS,UAAU,CAAC,UAAU,EAJnB,MAAM,EAIa,EAAE,UAAU,EAH/B,MAAM,EAGyB,GAF9B,OAAO,CAWlB;AAED;;;GAGG;AACH,iBAAS,QAAQ,CAAC,QAAQ,EAHf,MAGe,GAFd,OAAO,CAIlB;AAED,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDnB,CAAC;AAsDF;;;;;GAKG;AACH,iBAAS,mBAAmB,CAAC,SAAS,EAL3B,MAAM,EAKqB,EAAE,QAAQ,AAJ7C,CACA,EADO,MAAM,EAAE,YAI8B,EAAE,kBAAkB,AAHjE,CACA,EADO,GAAG,CAAC,MAAM,EAAC,OAAO,CAAC,YAGuC,GAFxD,OAAO,CA0ElB;AAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
- export = _exports;
2
- declare function _exports(): string[];
1
+ export default _default;
2
+ declare function _default(): string[];
3
3
  //# sourceMappingURL=getBrowsersForWebBuild.d.ts.map
@@ -1,7 +1,3 @@
1
- declare const _exports: {
2
- isConflictingProp: typeof isConflictingProp;
3
- };
4
- export = _exports;
5
1
  /**
6
2
  * True if declarations of `propA` and `propB` can set the same underlying
7
3
  * property, so that reordering them within a rule can change what the rule
@@ -14,4 +10,5 @@ export = _exports;
14
10
  * @return {boolean}
15
11
  */
16
12
  declare function isConflictingProp(propA: string, propB: string): boolean;
13
+ export { isConflictingProp };
17
14
  //# sourceMappingURL=propertyRelations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"propertyRelations.d.ts","sourceRoot":"","sources":["../../src/lib/propertyRelations.js"],"names":[],"mappings":";;;;AAwHA;;;;;;;;;;GAUG;AACH,iBAAS,iBAAiB,CAAC,KAAK,EAJrB,MAIqB,EAAE,KAAK,EAH5B,MAG4B,GAF3B,OAAO,CAuClB"}
1
+ {"version":3,"file":"propertyRelations.d.ts","sourceRoot":"","sources":["../../src/lib/propertyRelations.js"],"names":[],"mappings":"AAsHA;;;;;;;;;;GAUG;AACH,iBAAS,iBAAiB,CAAC,KAAK,EAJrB,MAIqB,EAAE,KAAK,EAH5B,MAG4B,GAF3B,OAAO,CAuClB;AACD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}