postcss-merge-rules 6.0.4 → 6.1.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,6 +1,6 @@
1
1
  {
2
2
  "name": "postcss-merge-rules",
3
- "version": "6.0.4",
3
+ "version": "6.1.0",
4
4
  "description": "Merge CSS rules with PostCSS.",
5
5
  "types": "types/index.d.ts",
6
6
  "main": "src/index.js",
@@ -27,7 +27,7 @@
27
27
  "browserslist": "^4.23.0",
28
28
  "caniuse-api": "^3.0.0",
29
29
  "postcss-selector-parser": "^6.0.15",
30
- "cssnano-utils": "^4.0.1"
30
+ "cssnano-utils": "^4.0.2"
31
31
  },
32
32
  "bugs": {
33
33
  "url": "https://github.com/cssnano/cssnano/issues"
@@ -39,7 +39,7 @@
39
39
  "@types/caniuse-api": "^3.0.6",
40
40
  "postcss": "^8.4.35",
41
41
  "postcss-simple-vars": "^7.0.1",
42
- "postcss-discard-comments": "^6.0.1"
42
+ "postcss-discard-comments": "^6.0.2"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "postcss": "^8.4.31"
package/src/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  'use strict';
2
+ const { dirname } = require('path');
2
3
  const browserslist = require('browserslist');
3
4
  const { sameParent } = require('cssnano-utils');
4
5
  const {
@@ -406,21 +407,31 @@ function selectorMerger(browsers, compatibilityCache) {
406
407
  cache = partialMerge(cache, rule);
407
408
  };
408
409
  }
410
+
411
+ /**
412
+ * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
413
+ * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
414
+ * @typedef {AutoprefixerOptions & BrowserslistOptions} Options
415
+ */
416
+
409
417
  /**
410
- * @type {import('postcss').PluginCreator<void>}
418
+ * @type {import('postcss').PluginCreator<Options>}
419
+ * @param {Options} opts
411
420
  * @return {import('postcss').Plugin}
412
421
  */
413
- function pluginCreator() {
422
+ function pluginCreator(opts = {}) {
414
423
  return {
415
424
  postcssPlugin: 'postcss-merge-rules',
416
425
 
426
+ /**
427
+ * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
428
+ */
417
429
  prepare(result) {
418
- /** @type {typeof result.opts & browserslist.Options} */
419
- const resultOpts = result.opts || {};
420
- const browsers = browserslist(null, {
421
- stats: resultOpts.stats,
422
- path: __dirname,
423
- env: resultOpts.env,
430
+ const { stats, env, from, file } = result.opts || {};
431
+ const browsers = browserslist(opts.overrideBrowserslist, {
432
+ stats: opts.stats || stats,
433
+ path: opts.path || dirname(from || file || __filename),
434
+ env: opts.env || env,
424
435
  });
425
436
 
426
437
  const compatibilityCache = new Map();
package/types/index.d.ts CHANGED
@@ -1,9 +1,23 @@
1
1
  export = pluginCreator;
2
2
  /**
3
- * @type {import('postcss').PluginCreator<void>}
3
+ * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
4
+ * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
5
+ * @typedef {AutoprefixerOptions & BrowserslistOptions} Options
6
+ */
7
+ /**
8
+ * @type {import('postcss').PluginCreator<Options>}
9
+ * @param {Options} opts
4
10
  * @return {import('postcss').Plugin}
5
11
  */
6
- declare function pluginCreator(): import('postcss').Plugin;
12
+ declare function pluginCreator(opts?: Options): import('postcss').Plugin;
7
13
  declare namespace pluginCreator {
8
- let postcss: true;
14
+ export { postcss, AutoprefixerOptions, BrowserslistOptions, Options };
9
15
  }
16
+ type Options = AutoprefixerOptions & BrowserslistOptions;
17
+ declare var postcss: true;
18
+ type AutoprefixerOptions = {
19
+ overrideBrowserslist?: string | string[];
20
+ };
21
+ type BrowserslistOptions = Pick<browserslist.Options, 'stats' | 'path' | 'env'>;
22
+ import browserslist = require("browserslist");
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AA0ZA;;;;GAIG;AAEH;;;;GAIG;AACH,sCAHW,OAAO,GACN,OAAO,SAAS,EAAE,MAAM,CAyBnC;;;;eA/BY,mBAAmB,GAAG,mBAAmB;;2BAFzC;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE;2BAC5C,KAAK,oBAAoB,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC"}
@@ -69,3 +69,4 @@ export const pseudoElements: {
69
69
  * @return {boolean}
70
70
  */
71
71
  export function ensureCompatibility(selectors: string[], browsers?: string[] | undefined, compatibilityCache?: Map<string, boolean> | undefined): boolean;
72
+ //# sourceMappingURL=ensureCompatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureCompatibility.d.ts","sourceRoot":"","sources":["../../src/lib/ensureCompatibility.js"],"names":[],"mappings":"AAqCA;;;;GAIG;AACH,uCAJW,MAAM,EAAE,cACR,MAAM,EAAE,GACP,OAAO,CAWlB;AAED;;;GAGG;AACH,mCAHW,MAAM,GACL,OAAO,CAIlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDE;AAqCF;;;;;GAKG;AACH,+CALW,MAAM,EAAE,aACT,MAAM,EAAE,mCACR,IAAI,MAAM,EAAC,OAAO,CAAC,eACjB,OAAO,CA0ElB"}