postcss-colormin 8.0.1 → 8.0.2

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/LICENSE-MIT CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)
1
+ Copyright (c) Ben Briggs <beneb.info@gmail.com> (https://beneb.info)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person
4
4
  obtaining a copy of this software and associated documentation
package/README.md CHANGED
@@ -39,7 +39,7 @@ See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTOR
39
39
 
40
40
  ## License
41
41
 
42
- MIT © [Ben Briggs](http://beneb.info)
42
+ MIT © [Ben Briggs](https://beneb.info)
43
43
 
44
44
 
45
45
  [postcss]: https://github.com/postcss/postcss
package/package.json CHANGED
@@ -1,9 +1,25 @@
1
1
  {
2
2
  "name": "postcss-colormin",
3
- "version": "8.0.1",
3
+ "version": "8.0.2",
4
4
  "description": "Minify colors in your CSS files with PostCSS.",
5
- "main": "src/index.js",
6
- "types": "types/index.d.ts",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./types/index.d.ts",
8
+ "default": "./src/index.js"
9
+ },
10
+ "./src": "./src/index.js",
11
+ "./src/index": "./src/index.js",
12
+ "./src/index.js": "./src/*.js",
13
+ "./src/minifyColor": "./src/minifyColor.js",
14
+ "./src/minifyColor.js": "./src/minifyColor.js",
15
+ "./package.json": "./package.json"
16
+ },
17
+ "imports": {
18
+ "#getBrowsersList": {
19
+ "node": "./src/lib/computeBrowsersToSupport.js",
20
+ "default": "./src/lib/getBrowsersForWebBuild.js"
21
+ }
22
+ },
7
23
  "files": [
8
24
  "src",
9
25
  "LICENSE-MIT",
@@ -23,12 +39,15 @@
23
39
  "author": {
24
40
  "name": "Ben Briggs",
25
41
  "email": "beneb.info@gmail.com",
26
- "url": "http://beneb.info"
42
+ "url": "https://beneb.info"
43
+ },
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "cssnano/cssnano"
27
47
  },
28
- "repository": "cssnano/cssnano",
29
48
  "dependencies": {
30
- "@colordx/core": "^5.4.3",
31
- "browserslist": "^4.28.2",
49
+ "@colordx/core": "^5.5.0",
50
+ "browserslist": "^4.28.7",
32
51
  "caniuse-api": "^4.0.0",
33
52
  "postcss-value-parser": "^4.2.0"
34
53
  },
@@ -39,9 +58,9 @@
39
58
  "node": "^22.11.0 || ^24.11.0 || >=26.0"
40
59
  },
41
60
  "devDependencies": {
42
- "postcss": "^8.5.15"
61
+ "postcss": "^8.5.25"
43
62
  },
44
63
  "peerDependencies": {
45
- "postcss": "^8.5.15"
64
+ "postcss": "^8.5.25"
46
65
  }
47
66
  }
package/src/index.js CHANGED
@@ -1,10 +1,15 @@
1
1
  'use strict';
2
- const { dirname } = require('path');
3
- const browserslist = require('browserslist');
2
+
3
+ const getBrowsersList = require('#getBrowsersList');
4
4
  const { isSupported } = require('caniuse-api');
5
5
  const valueParser = require('postcss-value-parser');
6
6
  const minifyColor = require('./minifyColor');
7
7
 
8
+ /** @import browserslist from 'browserslist' */
9
+
10
+ const rgbOrHslRegex = /^(rgb|hsl)a?$/i;
11
+ const notMinifiableRegex =
12
+ /^(composes|font|src$|filter|-webkit-tap-highlight-color)/i;
8
13
  /**
9
14
  * @param {{nodes: valueParser.Node[]}} parent
10
15
  * @param {(node: valueParser.Node, index: number, parent: {nodes: valueParser.Node[]}) => false | undefined} callback
@@ -50,7 +55,7 @@ function transform(value, options) {
50
55
 
51
56
  walk(parsed, (node, index, parent) => {
52
57
  if (node.type === 'function') {
53
- if (/^(rgb|hsl)a?$/i.test(node.value)) {
58
+ if (rgbOrHslRegex.test(node.value)) {
54
59
  const { value: originalValue } = node;
55
60
 
56
61
  node.value = minifyColor(valueParser.stringify(node), options);
@@ -118,7 +123,6 @@ function addPluginDefaults(options, browsers) {
118
123
  */
119
124
 
120
125
  /**
121
- * @type {import('postcss').PluginCreator<Options>}
122
126
  * @param {Options} config
123
127
  * @return {import('postcss').Plugin}
124
128
  */
@@ -131,27 +135,25 @@ function pluginCreator(config = {}) {
131
135
  */
132
136
  prepare(result) {
133
137
  const { stats, env, from, file } = result.opts || {};
134
- const browsers = browserslist(config.overrideBrowserslist, {
135
- stats: config.stats || stats,
136
- path: config.path || dirname(from || file || __filename),
137
- env: config.env || env,
138
- });
139
-
138
+ const browsers = getBrowsersList(config, stats, from, file, env);
140
139
  const cache = new Map();
141
140
  const options = addPluginDefaults(config, browsers);
142
141
 
143
142
  return {
143
+ /**
144
+ * @param {import('postcss').Root} css
145
+ */
144
146
  OnceExit(css) {
145
147
  css.walkDecls((decl) => {
146
- if (
147
- /^(composes|font|src$|filter|-webkit-tap-highlight-color)/i.test(
148
- decl.prop
149
- )
150
- ) {
148
+ if (notMinifiableRegex.test(decl.prop)) {
151
149
  return;
152
150
  }
153
151
 
154
- if (config.transformCustomProperties === false && decl.prop.startsWith('--')) {
152
+ if (
153
+ /** @type Options */ (config).transformCustomProperties ===
154
+ false &&
155
+ decl.prop.startsWith('--')
156
+ ) {
155
157
  return;
156
158
  }
157
159
 
@@ -181,4 +183,6 @@ function pluginCreator(config = {}) {
181
183
  }
182
184
 
183
185
  pluginCreator.postcss = true;
184
- module.exports = pluginCreator;
186
+ module.exports = /** @type {import('postcss').PluginCreator<Options>}*/ (
187
+ pluginCreator
188
+ );
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const browserslist = require('browserslist');
4
+ const { dirname } = require('node:path');
5
+
6
+ /**
7
+ *
8
+ * @param {{overrideBrowserslist?: string | string[] | undefined, stats?: browserslist.Options["stats"], path?: browserslist.Options["path"], env?: browserslist.Options["env"]}} options
9
+ * @param {browserslist.Options["stats"]} stats
10
+ * @param {string|undefined} from
11
+ * @param {string} [file]
12
+ * @param {browserslist.Options["env"]} [env]
13
+ * @returns {string[]}
14
+ */
15
+ module.exports = function computeBrowsersToSupport(
16
+ options,
17
+ stats,
18
+ from,
19
+ file,
20
+ env
21
+ ) {
22
+ return browserslist(options.overrideBrowserslist, {
23
+ stats: options.stats || stats,
24
+ path: options.path || dirname(from || file || __filename),
25
+ env: options.env || env,
26
+ });
27
+ };
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ module.exports = function () {
4
+ return [
5
+ 'and_chr 150',
6
+ 'and_ff 152',
7
+ 'and_qq 14.9',
8
+ 'and_uc 15.5',
9
+ 'android 150',
10
+ 'chrome 150',
11
+ 'chrome 149',
12
+ 'chrome 148',
13
+ 'chrome 118',
14
+ 'chrome 109',
15
+ 'edge 150',
16
+ 'edge 149',
17
+ 'edge 148',
18
+ 'firefox 152',
19
+ 'firefox 151',
20
+ 'firefox 140',
21
+ 'ios_saf 26.5',
22
+ 'ios_saf 26.4',
23
+ 'ios_saf 26.3',
24
+ 'ios_saf 18.5-18.7',
25
+ 'kaios 3.0-3.1',
26
+ 'op_mob 80',
27
+ 'opera 131',
28
+ 'opera 127',
29
+ 'safari 26.5',
30
+ 'safari 26.4',
31
+ 'safari 26.3',
32
+ 'samsung 30',
33
+ 'samsung 29',
34
+ ];
35
+ };
package/types/index.d.ts CHANGED
@@ -1,45 +1,21 @@
1
- export = pluginCreator;
2
- /**
3
- * @typedef {object} MinifyColorOptions
4
- * @property {boolean} [hex]
5
- * @property {boolean} [alphaHex]
6
- * @property {boolean} [rgb]
7
- * @property {boolean} [hsl]
8
- * @property {boolean} [name]
9
- * @property {boolean} [transparent]
10
- * @property {boolean} [transformCustomProperties] Whether to minify colors inside custom property values (default: true)
11
- */
12
- /**
13
- * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
14
- * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
15
- * @typedef {MinifyColorOptions & AutoprefixerOptions & BrowserslistOptions} Options
16
- */
17
- /**
18
- * @type {import('postcss').PluginCreator<Options>}
19
- * @param {Options} config
20
- * @return {import('postcss').Plugin}
21
- */
22
- declare function pluginCreator(config?: Options): import("postcss").Plugin;
23
- declare namespace pluginCreator {
24
- export { postcss, MinifyColorOptions, AutoprefixerOptions, BrowserslistOptions, Options };
25
- }
26
- declare var postcss: true;
27
- type MinifyColorOptions = {
28
- hex?: boolean | undefined;
29
- alphaHex?: boolean | undefined;
30
- rgb?: boolean | undefined;
31
- hsl?: boolean | undefined;
32
- name?: boolean | undefined;
33
- transparent?: boolean | undefined;
1
+ declare const _exports: import("postcss").PluginCreator<Options>;
2
+ export = _exports;
3
+ import type browserslist from 'browserslist';
4
+ export type MinifyColorOptions = {
5
+ hex?: boolean;
6
+ alphaHex?: boolean;
7
+ rgb?: boolean;
8
+ hsl?: boolean;
9
+ name?: boolean;
10
+ transparent?: boolean;
34
11
  /**
35
12
  * Whether to minify colors inside custom property values (default: true)
36
13
  */
37
- transformCustomProperties?: boolean | undefined;
14
+ transformCustomProperties?: boolean;
38
15
  };
39
- type AutoprefixerOptions = {
16
+ export type AutoprefixerOptions = {
40
17
  overrideBrowserslist?: string | string[];
41
18
  };
42
- type BrowserslistOptions = Pick<browserslist.Options, "stats" | "path" | "env">;
43
- type Options = MinifyColorOptions & AutoprefixerOptions & BrowserslistOptions;
44
- import browserslist = require("browserslist");
19
+ export type BrowserslistOptions = Pick<browserslist.Options, 'stats' | 'path' | 'env'>;
20
+ export type Options = MinifyColorOptions & AutoprefixerOptions & BrowserslistOptions;
45
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AAsGA;;;;;;;;;GASG;AAEH;;;;GAIG;AAEH;;;;GAIG;AACH,wCAHW,OAAO,GACN,OAAO,SAAS,EAAE,MAAM,CA0DnC;;;;;;;;;;;;;;;;;2BAlEY;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE;2BAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;eACpD,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;AAOI,OAAQ,KAAA,YAAY,MAAM,cAAc,CAAA;AAqGzC,YAAkB,kBAAkB,GACpC;IAAqB,GAAG,AAAxB,CACA,EADW,OAAO,CAClB;IAAqB,QAAQ,AAA7B,CACA,EADW,OAAO,CAClB;IAAqB,GAAG,AAAxB,CACA,EADW,OAAO,CAClB;IAAqB,GAAG,AAAxB,CACA,EADW,OAAO,CAClB;IAAqB,IAAI,AAAzB,CACA,EADW,OAAO,CAClB;IAAqB,WAAW,AAAhC,CACA,EADW,OAAO,CAClB;;;;IAAqB,yBAAyB,AAA9C,CACF,EADa,OAAO,CACpB;CAAA,CAAA;AAGE,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,YAA0E,OAAO,GAAvE,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,CAAS"}
@@ -0,0 +1,18 @@
1
+ export = computeBrowsersToSupport;
2
+ /**
3
+ *
4
+ * @param {{overrideBrowserslist?: string | string[] | undefined, stats?: browserslist.Options["stats"], path?: browserslist.Options["path"], env?: browserslist.Options["env"]}} options
5
+ * @param {browserslist.Options["stats"]} stats
6
+ * @param {string|undefined} from
7
+ * @param {string} [file]
8
+ * @param {browserslist.Options["env"]} [env]
9
+ * @returns {string[]}
10
+ */
11
+ declare function computeBrowsersToSupport(options: {
12
+ overrideBrowserslist?: string | string[] | undefined;
13
+ stats?: browserslist.Options["stats"];
14
+ path?: browserslist.Options["path"];
15
+ env?: browserslist.Options["env"];
16
+ }, stats: browserslist.Options["stats"], from: string | undefined, file?: string, env?: browserslist.Options["env"]): string[];
17
+ import browserslist = require('browserslist');
18
+ //# sourceMappingURL=computeBrowsersToSupport.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ export = _exports;
2
+ declare function _exports(): string[];
3
+ //# sourceMappingURL=getBrowsersForWebBuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBrowsersForWebBuild.d.ts","sourceRoot":"","sources":["../../src/lib/getBrowsersForWebBuild.js"],"names":[],"mappings":""}
@@ -1,3 +1,10 @@
1
- declare function _exports(input: string, options?: import("./index.js").MinifyColorOptions): string;
2
- export = _exports;
1
+ export = minifyColor;
2
+ /**
3
+ * Performs color value minification
4
+ *
5
+ * @param {string} input - CSS value
6
+ * @param {import('./index.js').MinifyColorOptions} options - object with colordx.minify() options
7
+ * @return {string}
8
+ */
9
+ declare function minifyColor(input: string, options?: import('./index.js').MinifyColorOptions): string;
3
10
  //# sourceMappingURL=minifyColor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"minifyColor.d.ts","sourceRoot":"","sources":["../src/minifyColor.js"],"names":[],"mappings":"AAeiB,iCAJN,MAAM,YACN,OAAO,YAAY,EAAE,kBAAkB,GACtC,MAAM,CAejB"}
1
+ {"version":3,"file":"minifyColor.d.ts","sourceRoot":"","sources":["../src/minifyColor.js"],"names":[],"mappings":";AAQA;;;;;;GAMG;6BACmC,KAAK,EAJhC,MAIgC,EAAE,OAAO,GAHzC,OAAO,YAAY,EAAE,kBAGyB,GAF7C,MAAM"}