From c06f7ee0a40255214c477e13d9b956a7e07c2900 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Oct 2023 15:05:55 +0800 Subject: postcss,(plugins): nanocss, postcss-preset-env --- node_modules/postcss-ordered-values/LICENSE-MIT | 22 +++ node_modules/postcss-ordered-values/README.md | 72 +++++++++ node_modules/postcss-ordered-values/package.json | 41 ++++++ node_modules/postcss-ordered-values/src/index.js | 163 +++++++++++++++++++++ .../postcss-ordered-values/src/lib/addSpace.js | 8 + .../postcss-ordered-values/src/lib/getValue.js | 36 +++++ .../src/lib/joinGridValue.js | 8 + .../src/lib/mathfunctions.js | 3 + .../src/lib/vendorUnprefixed.js | 10 ++ .../postcss-ordered-values/src/rules/animation.js | 148 +++++++++++++++++++ .../postcss-ordered-values/src/rules/border.js | 60 ++++++++ .../postcss-ordered-values/src/rules/boxShadow.js | 73 +++++++++ .../postcss-ordered-values/src/rules/columns.js | 39 +++++ .../postcss-ordered-values/src/rules/flexFlow.js | 36 +++++ .../postcss-ordered-values/src/rules/grid.js | 100 +++++++++++++ .../postcss-ordered-values/src/rules/listStyle.js | 44 ++++++ .../src/rules/listStyleTypes.json | 102 +++++++++++++ .../postcss-ordered-values/src/rules/transition.js | 76 ++++++++++ .../postcss-ordered-values/types/index.d.ts | 9 ++ .../postcss-ordered-values/types/lib/addSpace.d.ts | 2 + .../postcss-ordered-values/types/lib/getValue.d.ts | 2 + .../types/lib/joinGridValue.d.ts | 2 + .../types/lib/mathfunctions.d.ts | 2 + .../types/lib/vendorUnprefixed.d.ts | 6 + .../types/rules/animation.d.ts | 2 + .../postcss-ordered-values/types/rules/border.d.ts | 2 + .../types/rules/boxShadow.d.ts | 2 + .../types/rules/columns.d.ts | 2 + .../types/rules/flexFlow.d.ts | 2 + .../postcss-ordered-values/types/rules/grid.d.ts | 15 ++ .../types/rules/listStyle.d.ts | 2 + .../types/rules/transition.d.ts | 2 + 32 files changed, 1093 insertions(+) create mode 100644 node_modules/postcss-ordered-values/LICENSE-MIT create mode 100644 node_modules/postcss-ordered-values/README.md create mode 100644 node_modules/postcss-ordered-values/package.json create mode 100644 node_modules/postcss-ordered-values/src/index.js create mode 100644 node_modules/postcss-ordered-values/src/lib/addSpace.js create mode 100644 node_modules/postcss-ordered-values/src/lib/getValue.js create mode 100644 node_modules/postcss-ordered-values/src/lib/joinGridValue.js create mode 100644 node_modules/postcss-ordered-values/src/lib/mathfunctions.js create mode 100644 node_modules/postcss-ordered-values/src/lib/vendorUnprefixed.js create mode 100644 node_modules/postcss-ordered-values/src/rules/animation.js create mode 100644 node_modules/postcss-ordered-values/src/rules/border.js create mode 100644 node_modules/postcss-ordered-values/src/rules/boxShadow.js create mode 100644 node_modules/postcss-ordered-values/src/rules/columns.js create mode 100644 node_modules/postcss-ordered-values/src/rules/flexFlow.js create mode 100644 node_modules/postcss-ordered-values/src/rules/grid.js create mode 100644 node_modules/postcss-ordered-values/src/rules/listStyle.js create mode 100644 node_modules/postcss-ordered-values/src/rules/listStyleTypes.json create mode 100644 node_modules/postcss-ordered-values/src/rules/transition.js create mode 100644 node_modules/postcss-ordered-values/types/index.d.ts create mode 100644 node_modules/postcss-ordered-values/types/lib/addSpace.d.ts create mode 100644 node_modules/postcss-ordered-values/types/lib/getValue.d.ts create mode 100644 node_modules/postcss-ordered-values/types/lib/joinGridValue.d.ts create mode 100644 node_modules/postcss-ordered-values/types/lib/mathfunctions.d.ts create mode 100644 node_modules/postcss-ordered-values/types/lib/vendorUnprefixed.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/animation.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/border.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/boxShadow.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/columns.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/flexFlow.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/grid.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/listStyle.d.ts create mode 100644 node_modules/postcss-ordered-values/types/rules/transition.d.ts (limited to 'node_modules/postcss-ordered-values') diff --git a/node_modules/postcss-ordered-values/LICENSE-MIT b/node_modules/postcss-ordered-values/LICENSE-MIT new file mode 100644 index 00000000..fd0e863a --- /dev/null +++ b/node_modules/postcss-ordered-values/LICENSE-MIT @@ -0,0 +1,22 @@ +Copyright (c) Ben Briggs (http://beneb.info) + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/postcss-ordered-values/README.md b/node_modules/postcss-ordered-values/README.md new file mode 100644 index 00000000..bbeae789 --- /dev/null +++ b/node_modules/postcss-ordered-values/README.md @@ -0,0 +1,72 @@ +# [postcss][postcss]-ordered-values + +> Ensure values are ordered consistently in your CSS. + + +## Install + +With [npm](https://npmjs.org/package/postcss-ordered-values) do: + +``` +npm install postcss-ordered-values --save +``` + + +## Example + +Some CSS properties accept their values in an arbitrary order; for this reason, +it is entirely possible that different developers will write their values in +different orders. This module normalizes the order, making it easier for other +modules to understand which declarations are duplicates. + +### Input + +```css +h1 { + border: solid 1px red; + border: red solid .5em; + border: rgba(0, 30, 105, 0.8) solid 1px; + border: 1px solid red; +} +``` + +### Output + +```css +h1 { + border: 1px solid red; + border: .5em solid red; + border: 1px solid rgba(0, 30, 105, 0.8); + border: 1px solid red; +} +``` + + +## Support List + +For more examples, see the [tests](src/__tests__/index.js). + +* `animation`, `-webkit-animation` +* `border(border-left|right|top|bottom)` +* `box-shadow` +* `outline` +* `flex-flow` +* `transition`, `-webkit-transition` + + +## Usage + +See the [PostCSS documentation](https://github.com/postcss/postcss#usage) for +examples for your environment. + + +## Contributors + +See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTORS.md). + + +## License + +MIT © [Ben Briggs](http://beneb.info) + +[postcss]: https://github.com/postcss/postcss diff --git a/node_modules/postcss-ordered-values/package.json b/node_modules/postcss-ordered-values/package.json new file mode 100644 index 00000000..d832c70a --- /dev/null +++ b/node_modules/postcss-ordered-values/package.json @@ -0,0 +1,41 @@ +{ + "name": "postcss-ordered-values", + "version": "6.0.0", + "description": "Ensure values are ordered consistently in your CSS.", + "main": "src/index.js", + "types": "types/index.d.ts", + "files": [ + "src", + "LICENSE-MIT", + "types" + ], + "keywords": [ + "css", + "postcss", + "postcss-plugin" + ], + "license": "MIT", + "homepage": "https://github.com/cssnano/cssnano", + "author": { + "name": "Ben Briggs", + "email": "beneb.info@gmail.com", + "url": "http://beneb.info" + }, + "repository": "cssnano/cssnano", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "cssnano-utils": "^4.0.0" + }, + "bugs": { + "url": "https://github.com/cssnano/cssnano/issues" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "devDependencies": { + "postcss": "^8.2.15" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } +} \ No newline at end of file diff --git a/node_modules/postcss-ordered-values/src/index.js b/node_modules/postcss-ordered-values/src/index.js new file mode 100644 index 00000000..42c168a3 --- /dev/null +++ b/node_modules/postcss-ordered-values/src/index.js @@ -0,0 +1,163 @@ +'use strict'; +const valueParser = require('postcss-value-parser'); +const { + normalizeGridAutoFlow, + normalizeGridColumnRowGap, + normalizeGridColumnRow, +} = require('./rules/grid'); + +// rules +const animation = require('./rules/animation'); +const border = require('./rules/border'); +const boxShadow = require('./rules/boxShadow'); +const flexFlow = require('./rules/flexFlow'); +const transition = require('./rules/transition'); +const listStyle = require('./rules/listStyle'); +const column = require('./rules/columns'); +const vendorUnprefixed = require('./lib/vendorUnprefixed.js'); + +/** @type {[string, (parsed: valueParser.ParsedValue) => string][]} */ +const borderRules = [ + ['border', border], + ['border-block', border], + ['border-inline', border], + ['border-block-end', border], + ['border-block-start', border], + ['border-inline-end', border], + ['border-inline-start', border], + ['border-top', border], + ['border-right', border], + ['border-bottom', border], + ['border-left', border], +]; + +/** @type {[string, (parsed: valueParser.ParsedValue) => string | string[] | valueParser.ParsedValue][]} */ +const grid = [ + ['grid-auto-flow', normalizeGridAutoFlow], + ['grid-column-gap', normalizeGridColumnRowGap], // normal | + ['grid-row-gap', normalizeGridColumnRowGap], // normal | + ['grid-column', normalizeGridColumnRow], // + + ['grid-row', normalizeGridColumnRow], // + + ['grid-row-start', normalizeGridColumnRow], // + ['grid-row-end', normalizeGridColumnRow], // + ['grid-column-start', normalizeGridColumnRow], // + ['grid-column-end', normalizeGridColumnRow], // +]; + +/** @type {[string, (parsed: valueParser.ParsedValue) => string | valueParser.ParsedValue][]} */ +const columnRules = [ + ['column-rule', border], + ['columns', column], +]; + +/** @type {Map string | string[] | valueParser.ParsedValue)>} */ +const rules = new Map([ + ['animation', animation], + ['outline', border], + ['box-shadow', boxShadow], + ['flex-flow', flexFlow], + ['list-style', listStyle], + ['transition', transition], + ...borderRules, + ...grid, + ...columnRules, +]); + +const variableFunctions = new Set(['var', 'env', 'constant']); + +/** + * @param {valueParser.Node} node + * @return {boolean} + */ +function isVariableFunctionNode(node) { + if (node.type !== 'function') { + return false; + } + + return variableFunctions.has(node.value.toLowerCase()); +} + +/** + * @param {valueParser.ParsedValue} parsed + * @return {boolean} + */ +function shouldAbort(parsed) { + let abort = false; + + parsed.walk((node) => { + if ( + node.type === 'comment' || + isVariableFunctionNode(node) || + (node.type === 'word' && node.value.includes(`___CSS_LOADER_IMPORT___`)) + ) { + abort = true; + + return false; + } + }); + + return abort; +} + +/** + * @param {import('postcss').Declaration} decl + * @return {string} + */ +function getValue(decl) { + let { value, raws } = decl; + + if (raws && raws.value && raws.value.raw) { + value = raws.value.raw; + } + + return value; +} +/** + * @type {import('postcss').PluginCreator} + * @return {import('postcss').Plugin} + */ +function pluginCreator() { + return { + postcssPlugin: 'postcss-ordered-values', + prepare() { + const cache = new Map(); + return { + OnceExit(css) { + css.walkDecls((decl) => { + const lowerCasedProp = decl.prop.toLowerCase(); + const normalizedProp = vendorUnprefixed(lowerCasedProp); + const processor = rules.get(normalizedProp); + + if (!processor) { + return; + } + + const value = getValue(decl); + + if (cache.has(value)) { + decl.value = cache.get(value); + + return; + } + + const parsed = valueParser(value); + + if (parsed.nodes.length < 2 || shouldAbort(parsed)) { + cache.set(value, value); + + return; + } + + const result = processor(parsed); + + decl.value = result.toString(); + cache.set(value, result.toString()); + }); + }, + }; + }, + }; +} + +pluginCreator.postcss = true; +module.exports = pluginCreator; diff --git a/node_modules/postcss-ordered-values/src/lib/addSpace.js b/node_modules/postcss-ordered-values/src/lib/addSpace.js new file mode 100644 index 00000000..0e0bef9c --- /dev/null +++ b/node_modules/postcss-ordered-values/src/lib/addSpace.js @@ -0,0 +1,8 @@ +'use strict'; +/** @return {import('postcss-value-parser').SpaceNode} */ +module.exports = function addSpace() { + return /** @type import('postcss-value-parser').SpaceNode */ ({ + type: 'space', + value: ' ', + }); +}; diff --git a/node_modules/postcss-ordered-values/src/lib/getValue.js b/node_modules/postcss-ordered-values/src/lib/getValue.js new file mode 100644 index 00000000..6d94d4e2 --- /dev/null +++ b/node_modules/postcss-ordered-values/src/lib/getValue.js @@ -0,0 +1,36 @@ +'use strict'; +const { stringify } = require('postcss-value-parser'); + +/** + * @param {import('postcss-value-parser').Node[][]} values + * @return {string} + */ +module.exports = function getValue(values) { + return stringify(flatten(values)); +}; +/** + * @param {import('postcss-value-parser').Node[][]} values + * @return {import('postcss-value-parser').Node[]} + */ +function flatten(values) { + /** @type {import('postcss-value-parser').Node[]} */ + const nodes = []; + for (const [index, arg] of values.entries()) { + arg.forEach((val, idx) => { + if ( + idx === arg.length - 1 && + index === values.length - 1 && + val.type === 'space' + ) { + return; + } + nodes.push(val); + }); + + if (index !== values.length - 1) { + nodes[nodes.length - 1].type = 'div'; + nodes[nodes.length - 1].value = ','; + } + } + return nodes; +} diff --git a/node_modules/postcss-ordered-values/src/lib/joinGridValue.js b/node_modules/postcss-ordered-values/src/lib/joinGridValue.js new file mode 100644 index 00000000..4794db5d --- /dev/null +++ b/node_modules/postcss-ordered-values/src/lib/joinGridValue.js @@ -0,0 +1,8 @@ +'use strict'; +/** + * @param {string[]} grid + * @return {string} + */ +module.exports = function joinGridVal(grid) { + return grid.join(' / ').trim(); +}; diff --git a/node_modules/postcss-ordered-values/src/lib/mathfunctions.js b/node_modules/postcss-ordered-values/src/lib/mathfunctions.js new file mode 100644 index 00000000..3e63717f --- /dev/null +++ b/node_modules/postcss-ordered-values/src/lib/mathfunctions.js @@ -0,0 +1,3 @@ +'use strict'; +// All of the curently implemented math functions +module.exports = new Set(['calc', 'clamp', 'max', 'min']); diff --git a/node_modules/postcss-ordered-values/src/lib/vendorUnprefixed.js b/node_modules/postcss-ordered-values/src/lib/vendorUnprefixed.js new file mode 100644 index 00000000..69e93640 --- /dev/null +++ b/node_modules/postcss-ordered-values/src/lib/vendorUnprefixed.js @@ -0,0 +1,10 @@ +'use strict'; +/** + * @param {string} prop + * @return {string} + */ +function vendorUnprefixed(prop) { + return prop.replace(/^-\w+-/, ''); +} + +module.exports = vendorUnprefixed; diff --git a/node_modules/postcss-ordered-values/src/rules/animation.js b/node_modules/postcss-ordered-values/src/rules/animation.js new file mode 100644 index 00000000..a49dde58 --- /dev/null +++ b/node_modules/postcss-ordered-values/src/rules/animation.js @@ -0,0 +1,148 @@ +'use strict'; +const { unit } = require('postcss-value-parser'); +const { getArguments } = require('cssnano-utils'); +const addSpace = require('../lib/addSpace'); +const getValue = require('../lib/getValue'); + +// animation: [ none | ] ||