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 --- .../css-tree/lib/syntax/config/generator.js | 5 + node_modules/css-tree/lib/syntax/config/lexer.js | 8 ++ node_modules/css-tree/lib/syntax/config/mix.js | 115 +++++++++++++++++++++ .../css-tree/lib/syntax/config/parser-selector.js | 15 +++ node_modules/css-tree/lib/syntax/config/parser.js | 30 ++++++ node_modules/css-tree/lib/syntax/config/walker.js | 5 + 6 files changed, 178 insertions(+) create mode 100644 node_modules/css-tree/lib/syntax/config/generator.js create mode 100644 node_modules/css-tree/lib/syntax/config/lexer.js create mode 100644 node_modules/css-tree/lib/syntax/config/mix.js create mode 100644 node_modules/css-tree/lib/syntax/config/parser-selector.js create mode 100644 node_modules/css-tree/lib/syntax/config/parser.js create mode 100644 node_modules/css-tree/lib/syntax/config/walker.js (limited to 'node_modules/css-tree/lib/syntax/config') diff --git a/node_modules/css-tree/lib/syntax/config/generator.js b/node_modules/css-tree/lib/syntax/config/generator.js new file mode 100644 index 00000000..82e874c4 --- /dev/null +++ b/node_modules/css-tree/lib/syntax/config/generator.js @@ -0,0 +1,5 @@ +import * as node from '../node/index-generate.js'; + +export default { + node +}; diff --git a/node_modules/css-tree/lib/syntax/config/lexer.js b/node_modules/css-tree/lib/syntax/config/lexer.js new file mode 100644 index 00000000..d2119147 --- /dev/null +++ b/node_modules/css-tree/lib/syntax/config/lexer.js @@ -0,0 +1,8 @@ +import definitions from '../../data.js'; +import * as node from '../node/index.js'; + +export default { + generic: true, + ...definitions, + node +}; diff --git a/node_modules/css-tree/lib/syntax/config/mix.js b/node_modules/css-tree/lib/syntax/config/mix.js new file mode 100644 index 00000000..40c00e5f --- /dev/null +++ b/node_modules/css-tree/lib/syntax/config/mix.js @@ -0,0 +1,115 @@ +function appendOrSet(a, b) { + if (typeof b === 'string' && /^\s*\|/.test(b)) { + return typeof a === 'string' + ? a + b + : b.replace(/^\s*\|\s*/, ''); + } + + return b || null; +} + +function sliceProps(obj, props) { + const result = Object.create(null); + + for (const [key, value] of Object.entries(obj)) { + if (value) { + result[key] = {}; + for (const prop of Object.keys(value)) { + if (props.includes(prop)) { + result[key][prop] = value[prop]; + } + } + } + } + + return result; +} + +export default function mix(dest, src) { + const result = { ...dest }; + + for (const [prop, value] of Object.entries(src)) { + switch (prop) { + case 'generic': + result[prop] = Boolean(value); + break; + + case 'units': + result[prop] = { ...dest[prop] }; + for (const [name, patch] of Object.entries(value)) { + result[prop][name] = Array.isArray(patch) ? patch : []; + } + break; + + case 'atrules': + result[prop] = { ...dest[prop] }; + + for (const [name, atrule] of Object.entries(value)) { + const exists = result[prop][name] || {}; + const current = result[prop][name] = { + prelude: exists.prelude || null, + descriptors: { + ...exists.descriptors + } + }; + + if (!atrule) { + continue; + } + + current.prelude = atrule.prelude + ? appendOrSet(current.prelude, atrule.prelude) + : current.prelude || null; + + for (const [descriptorName, descriptorValue] of Object.entries(atrule.descriptors || {})) { + current.descriptors[descriptorName] = descriptorValue + ? appendOrSet(current.descriptors[descriptorName], descriptorValue) + : null; + } + + if (!Object.keys(current.descriptors).length) { + current.descriptors = null; + } + } + break; + + case 'types': + case 'properties': + result[prop] = { ...dest[prop] }; + for (const [name, syntax] of Object.entries(value)) { + result[prop][name] = appendOrSet(result[prop][name], syntax); + } + break; + + case 'scope': + result[prop] = { ...dest[prop] }; + for (const [name, props] of Object.entries(value)) { + result[prop][name] = { ...result[prop][name], ...props }; + } + break; + + case 'parseContext': + result[prop] = { + ...dest[prop], + ...value + }; + break; + + case 'atrule': + case 'pseudo': + result[prop] = { + ...dest[prop], + ...sliceProps(value, ['parse']) }; + break; + + case 'node': + result[prop] = { + ...dest[prop], + ...sliceProps(value, ['name', 'structure', 'parse', 'generate', 'walkContext']) + }; + break; + } + } + + return result; +} diff --git a/node_modules/css-tree/lib/syntax/config/parser-selector.js b/node_modules/css-tree/lib/syntax/config/parser-selector.js new file mode 100644 index 00000000..c9e0ee2b --- /dev/null +++ b/node_modules/css-tree/lib/syntax/config/parser-selector.js @@ -0,0 +1,15 @@ +import { Selector } from '../scope/index.js'; +import pseudo from '../pseudo/index.js'; +import * as node from '../node/index-parse-selector.js'; + +export default { + parseContext: { + default: 'SelectorList', + selectorList: 'SelectorList', + selector: 'Selector' + }, + scope: { Selector }, + atrule: {}, + pseudo, + node +}; diff --git a/node_modules/css-tree/lib/syntax/config/parser.js b/node_modules/css-tree/lib/syntax/config/parser.js new file mode 100644 index 00000000..fe2cae23 --- /dev/null +++ b/node_modules/css-tree/lib/syntax/config/parser.js @@ -0,0 +1,30 @@ +import * as scope from '../scope/index.js'; +import atrule from '../atrule/index.js'; +import pseudo from '../pseudo/index.js'; +import * as node from '../node/index-parse.js'; + +export default { + parseContext: { + default: 'StyleSheet', + stylesheet: 'StyleSheet', + atrule: 'Atrule', + atrulePrelude(options) { + return this.AtrulePrelude(options.atrule ? String(options.atrule) : null); + }, + mediaQueryList: 'MediaQueryList', + mediaQuery: 'MediaQuery', + rule: 'Rule', + selectorList: 'SelectorList', + selector: 'Selector', + block() { + return this.Block(true); + }, + declarationList: 'DeclarationList', + declaration: 'Declaration', + value: 'Value' + }, + scope, + atrule, + pseudo, + node +}; diff --git a/node_modules/css-tree/lib/syntax/config/walker.js b/node_modules/css-tree/lib/syntax/config/walker.js new file mode 100644 index 00000000..215d0248 --- /dev/null +++ b/node_modules/css-tree/lib/syntax/config/walker.js @@ -0,0 +1,5 @@ +import * as node from '../node/index.js'; + +export default { + node +}; -- cgit v1.2.3