summaryrefslogtreecommitdiff
path: root/node_modules/postcss-minify-params/src/index.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:10:59 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:41:44 +0800
commitfc87c009806dcc98867f6b58efe29b042aa01dee (patch)
tree8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/postcss-minify-params/src/index.js
parent3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff)
node: updatemain
Diffstat (limited to 'node_modules/postcss-minify-params/src/index.js')
-rw-r--r--node_modules/postcss-minify-params/src/index.js174
1 files changed, 0 insertions, 174 deletions
diff --git a/node_modules/postcss-minify-params/src/index.js b/node_modules/postcss-minify-params/src/index.js
deleted file mode 100644
index df65593e..00000000
--- a/node_modules/postcss-minify-params/src/index.js
+++ /dev/null
@@ -1,174 +0,0 @@
-'use strict';
-const { dirname } = require('path');
-const browserslist = require('browserslist');
-const valueParser = require('postcss-value-parser');
-const { getArguments } = require('cssnano-utils');
-
-/**
- * Return the greatest common divisor
- * of two numbers.
- *
- * @param {number} a
- * @param {number} b
- * @return {number}
- */
-function gcd(a, b) {
- return b ? gcd(b, a % b) : a;
-}
-
-/**
- * @param {number} a
- * @param {number} b
- * @return {[number, number]}
- */
-function aspectRatio(a, b) {
- const divisor = gcd(a, b);
-
- return [a / divisor, b / divisor];
-}
-
-/**
- * @param {valueParser.Node[]} args
- * @return {string}
- */
-function split(args) {
- return args.map((arg) => valueParser.stringify(arg)).join('');
-}
-
-/**
- * @param {valueParser.Node} node
- * @return {void}
- */
-function removeNode(node) {
- node.value = '';
- node.type = 'word';
-}
-
-/**
- * @param {unknown[]} items
- * @return {string}
- */
-function sortAndDedupe(items) {
- const a = [...new Set(items)];
- a.sort();
- return a.join();
-}
-
-/**
- * @param {boolean} legacy
- * @param {import('postcss').AtRule} rule
- * @return {void}
- */
-function transform(legacy, rule) {
- const ruleName = rule.name.toLowerCase();
-
- // We should re-arrange parameters only for `@media` and `@supports` at-rules
- if (!rule.params || !['media', 'supports'].includes(ruleName)) {
- return;
- }
-
- const params = valueParser(rule.params);
-
- params.walk((node, index) => {
- if (node.type === 'div') {
- node.before = node.after = '';
- } else if (node.type === 'function') {
- node.before = '';
- if (
- node.nodes[0] &&
- node.nodes[0].type === 'word' &&
- node.nodes[0].value.startsWith('--') &&
- node.nodes[2] === undefined
- ) {
- node.after = ' ';
- } else {
- node.after = '';
- }
- if (
- node.nodes[4] &&
- node.nodes[0].value.toLowerCase().indexOf('-aspect-ratio') === 3
- ) {
- const [a, b] = aspectRatio(
- Number(node.nodes[2].value),
- Number(node.nodes[4].value)
- );
-
- node.nodes[2].value = a.toString();
- node.nodes[4].value = b.toString();
- }
- } else if (node.type === 'space') {
- node.value = ' ';
- } else {
- const prevWord = params.nodes[index - 2];
-
- if (
- node.value.toLowerCase() === 'all' &&
- rule.name.toLowerCase() === 'media' &&
- !prevWord
- ) {
- const nextWord = params.nodes[index + 2];
-
- if (!legacy || nextWord) {
- removeNode(node);
- }
-
- if (nextWord && nextWord.value.toLowerCase() === 'and') {
- const nextSpace = params.nodes[index + 1];
- const secondSpace = params.nodes[index + 3];
-
- removeNode(nextWord);
- removeNode(nextSpace);
- removeNode(secondSpace);
- }
- }
- }
- }, true);
-
- rule.params = sortAndDedupe(getArguments(params).map(split));
-
- if (!rule.params.length) {
- rule.raws.afterName = '';
- }
-}
-
-const allBugBrowers = new Set(['ie 10', 'ie 11']);
-
-/**
- * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
- * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
- * @typedef {AutoprefixerOptions & BrowserslistOptions} Options
- */
-
-/**
- * @type {import('postcss').PluginCreator<Options>}
- * @param {Options} options
- * @return {import('postcss').Plugin}
- */
-function pluginCreator(options = {}) {
- return {
- postcssPlugin: 'postcss-minify-params',
-
- /**
- * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
- */
- prepare(result) {
- const { stats, env, from, file } = result.opts || {};
- const browsers = browserslist(options.overrideBrowserslist, {
- stats: options.stats || stats,
- path: options.path || dirname(from || file || __filename),
- env: options.env || env,
- });
-
- const hasAllBug = browsers.some((browser) => allBugBrowers.has(browser));
-
- return {
- OnceExit(css) {
- css.walkAtRules((rule) => transform(hasAllBug, rule));
- },
- };
- },
- };
-}
-
-pluginCreator.postcss = true;
-module.exports = pluginCreator;