postcss-convert-values 8.0.1 → 8.0.3

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
@@ -91,7 +91,7 @@ See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTOR
91
91
 
92
92
  ## License
93
93
 
94
- MIT © [Ben Briggs](http://beneb.info)
94
+ MIT © [Ben Briggs](https://beneb.info)
95
95
 
96
96
 
97
97
  [postcss]: https://github.com/postcss/postcss
package/package.json CHANGED
@@ -1,9 +1,25 @@
1
1
  {
2
2
  "name": "postcss-convert-values",
3
- "version": "8.0.1",
3
+ "version": "8.0.3",
4
4
  "description": "Convert values with PostCSS (e.g. ms -> s)",
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/index.js",
13
+ "./src/lib/convert": "./src/lib/convert.js",
14
+ "./src/lib/convert.js": "./src/lib/convert.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
  "LICENSE-MIT",
9
25
  "src",
@@ -20,11 +36,14 @@
20
36
  "author": {
21
37
  "name": "Ben Briggs",
22
38
  "email": "beneb.info@gmail.com",
23
- "url": "http://beneb.info"
39
+ "url": "https://beneb.info"
40
+ },
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "cssnano/cssnano"
24
44
  },
25
- "repository": "cssnano/cssnano",
26
45
  "dependencies": {
27
- "browserslist": "^4.28.2",
46
+ "browserslist": "^4.28.8",
28
47
  "postcss-value-parser": "^4.2.0"
29
48
  },
30
49
  "bugs": {
@@ -34,9 +53,12 @@
34
53
  "node": "^22.11.0 || ^24.11.0 || >=26.0"
35
54
  },
36
55
  "devDependencies": {
37
- "postcss": "^8.5.15"
56
+ "postcss": "^8.5.26"
38
57
  },
39
58
  "peerDependencies": {
40
- "postcss": "^8.5.15"
59
+ "postcss": "^8.5.26"
60
+ },
61
+ "scripts": {
62
+ "test": "node --test"
41
63
  }
42
64
  }
package/src/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
- const { dirname } = require('path');
3
2
  const valueParser = require('postcss-value-parser');
4
- const browserslist = require('browserslist');
3
+ const getBrowsersList = require('#getBrowsersList');
5
4
  const convert = require('./lib/convert.js');
6
5
 
6
+ /** @import browserslist from 'browserslist' */
7
+
7
8
  const LENGTH_UNITS = new Set([
8
9
  'em',
9
10
  'ex',
@@ -119,7 +120,7 @@ function clampOpacity(node) {
119
120
  if (!pair) {
120
121
  return;
121
122
  }
122
- let num = Number(pair.number);
123
+ const num = Number(pair.number);
123
124
  if (num > 1) {
124
125
  node.value = pair.unit === '%' ? num + pair.unit : 1 + pair.unit;
125
126
  } else if (num < 0) {
@@ -149,12 +150,9 @@ function shouldKeepZeroUnit(decl, browsers) {
149
150
  (lowerCasedProp === 'initial-value' &&
150
151
  parent &&
151
152
  parent.type === 'atrule' &&
152
- /** @type {import('postcss').AtRule} */
153
- (parent).name === 'property' &&
154
- /** @type {import('postcss').AtRule} */
155
- (parent).nodes !== undefined &&
156
- /** @type {import('postcss').AtRule} */
157
- (parent).nodes.some(
153
+ parent.name === 'property' &&
154
+ parent.nodes !== undefined &&
155
+ parent.nodes.some(
158
156
  (node) =>
159
157
  node.type === 'decl' &&
160
158
  node.prop.toLowerCase() === 'syntax' &&
@@ -221,7 +219,6 @@ const plugin = 'postcss-convert-values';
221
219
  */
222
220
 
223
221
  /**
224
- * @type {import('postcss').PluginCreator<Options>}
225
222
  * @param {Options} opts
226
223
  * @return {import('postcss').Plugin}
227
224
  */
@@ -234,15 +231,16 @@ function pluginCreator(opts = { precision: false }) {
234
231
  */
235
232
  prepare(result) {
236
233
  const { stats, env, from, file } = result.opts || {};
237
- const browsers = browserslist(opts.overrideBrowserslist, {
238
- stats: opts.stats || stats,
239
- path: opts.path || dirname(from || file || __filename),
240
- env: opts.env || env,
241
- });
234
+ const browsers = getBrowsersList(opts, stats, from, file, env);
242
235
 
243
236
  return {
237
+ /**
238
+ * @param {import('postcss').Root} css
239
+ */
244
240
  OnceExit(css) {
245
- css.walkDecls((decl) => transform(opts, browsers, decl));
241
+ css.walkDecls((decl) =>
242
+ transform(/** @type {Options} */ (opts), browsers, decl)
243
+ );
246
244
  },
247
245
  };
248
246
  },
@@ -250,4 +248,6 @@ function pluginCreator(opts = { precision: false }) {
250
248
  }
251
249
 
252
250
  pluginCreator.postcss = true;
253
- module.exports = pluginCreator;
251
+ module.exports = /** @type {import('postcss').PluginCreator<Options>} */ (
252
+ pluginCreator
253
+ );
@@ -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
+ };
@@ -37,22 +37,27 @@ function dropLeadingZero(number) {
37
37
  /**
38
38
  * @param {number} number
39
39
  * @param {string} originalUnit
40
- * @param {lengthConv | timeConv | angleConv} conversions
40
+ * @param {typeof lengthConv | typeof timeConv | typeof angleConv} conversions
41
41
  * @return {string}
42
42
  */
43
43
  function transform(number, originalUnit, conversions) {
44
- let conversionUnits = [...conversions.keys()].filter((u) => {
44
+ const conversionUnits = [...conversions.keys()].filter((u) => {
45
45
  return originalUnit !== u;
46
46
  });
47
47
 
48
48
  const base = number * /** @type {number} */ (conversions.get(originalUnit));
49
49
 
50
- return conversionUnits
51
- .map(
52
- (u) =>
53
- dropLeadingZero(base / /** @type {number} */ (conversions.get(u))) + u
54
- )
55
- .reduce((a, b) => (a.length < b.length ? a : b));
50
+ let shortest = '';
51
+ for (const u of conversionUnits) {
52
+ const value =
53
+ dropLeadingZero(base / /** @type {number} */ (conversions.get(u))) + u;
54
+
55
+ if (!shortest || value.length < shortest.length) {
56
+ shortest = value;
57
+ }
58
+ }
59
+
60
+ return shortest;
56
61
  }
57
62
 
58
63
  /**
@@ -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,29 +1,14 @@
1
- export = pluginCreator;
2
- /**
3
- * @typedef {Parameters<typeof convert>[2]} ConvertOptions
4
- * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
5
- * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
6
- * @typedef {{precision?: false | number, transformCustomProperties?: boolean} & ConvertOptions & AutoprefixerOptions & BrowserslistOptions} Options
7
- */
8
- /**
9
- * @type {import('postcss').PluginCreator<Options>}
10
- * @param {Options} opts
11
- * @return {import('postcss').Plugin}
12
- */
13
- declare function pluginCreator(opts?: Options): import("postcss").Plugin;
14
- declare namespace pluginCreator {
15
- export { postcss, ConvertOptions, AutoprefixerOptions, BrowserslistOptions, Options };
16
- }
17
- declare var postcss: true;
18
- type ConvertOptions = Parameters<typeof convert>[2];
19
- type AutoprefixerOptions = {
1
+ declare const _exports: import("postcss").PluginCreator<Options>;
2
+ export = _exports;
3
+ import convert = require('./lib/convert.js');
4
+ import type browserslist from 'browserslist';
5
+ export type ConvertOptions = Parameters<typeof convert>[2];
6
+ export type AutoprefixerOptions = {
20
7
  overrideBrowserslist?: string | string[];
21
8
  };
22
- type BrowserslistOptions = Pick<browserslist.Options, "stats" | "path" | "env">;
23
- type Options = {
9
+ export type BrowserslistOptions = Pick<browserslist.Options, 'stats' | 'path' | 'env'>;
10
+ export type Options = {
24
11
  precision?: false | number;
25
12
  transformCustomProperties?: boolean;
26
13
  } & ConvertOptions & AutoprefixerOptions & BrowserslistOptions;
27
- import convert = require("./lib/convert.js");
28
- import browserslist = require("browserslist");
29
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AAuNA;;;;;GAKG;AAEH;;;;GAIG;AACH,sCAHW,OAAO,GACN,OAAO,SAAS,EAAE,MAAM,CAwBnC;;;;;sBAjCY,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;2BAC7B;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE;2BAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;eACpD;IAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;CAAC,GAAG,cAAc,GAAG,mBAAmB,GAAG,mBAAmB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;OAGM,OAAO,WAAW,kBAAkB;AAEtC,OAAQ,KAAA,YAAY,MAAM,cAAc,CAAA;AAiNzC,YAAyC,cAAc,GAA7C,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAgB;AACvD,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,YAA0I,OAAO,GAAvI;IAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;CAAC,GAAG,cAAc,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"}
@@ -1,7 +1,13 @@
1
+ export = _exports;
2
+ /**
3
+ * @param {number} number
4
+ * @param {string} unit
5
+ * @param {{time?: boolean, length?: boolean, angle?: boolean}} options
6
+ * @return {string}
7
+ */
1
8
  declare function _exports(number: number, unit: string, { time, length, angle }: {
2
9
  time?: boolean;
3
10
  length?: boolean;
4
11
  angle?: boolean;
5
12
  }): string;
6
- export = _exports;
7
13
  //# sourceMappingURL=convert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/lib/convert.js"],"names":[],"mappings":"AA+DiB,kCALN,MAAM,QACN,MAAM,2BACN;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC,GAClD,MAAM,CAuBjB"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/lib/convert.js"],"names":[],"mappings":";AA8DA;;;;;GAKG;0BACwB,MAAM,EALtB,MAKsB,EAAE,IAAI,EAJ5B,MAI4B,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAHrD;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAGG,GAFpD,MAAM"}
@@ -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":""}