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/csso/lib/usage.js | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 node_modules/csso/lib/usage.js (limited to 'node_modules/csso/lib/usage.js') diff --git a/node_modules/csso/lib/usage.js b/node_modules/csso/lib/usage.js new file mode 100644 index 00000000..1618e931 --- /dev/null +++ b/node_modules/csso/lib/usage.js @@ -0,0 +1,71 @@ +const { hasOwnProperty } = Object.prototype; + +function buildMap(list, caseInsensitive) { + const map = Object.create(null); + + if (!Array.isArray(list)) { + return null; + } + + for (let name of list) { + if (caseInsensitive) { + name = name.toLowerCase(); + } + + map[name] = true; + } + + return map; +} + +function buildList(data) { + if (!data) { + return null; + } + + const tags = buildMap(data.tags, true); + const ids = buildMap(data.ids); + const classes = buildMap(data.classes); + + if (tags === null && + ids === null && + classes === null) { + return null; + } + + return { + tags, + ids, + classes + }; +} + +export function buildIndex(data) { + let scopes = false; + + if (data.scopes && Array.isArray(data.scopes)) { + scopes = Object.create(null); + + for (let i = 0; i < data.scopes.length; i++) { + const list = data.scopes[i]; + + if (!list || !Array.isArray(list)) { + throw new Error('Wrong usage format'); + } + + for (const name of list) { + if (hasOwnProperty.call(scopes, name)) { + throw new Error(`Class can't be used for several scopes: ${name}`); + } + + scopes[name] = i + 1; + } + } + } + + return { + whitelist: buildList(data), + blacklist: buildList(data.blacklist), + scopes + }; +} -- cgit v1.2.3