summaryrefslogtreecommitdiff
path: root/node_modules/postcss-discard-overridden/src
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-discard-overridden/src')
-rw-r--r--node_modules/postcss-discard-overridden/src/index.js94
1 files changed, 0 insertions, 94 deletions
diff --git a/node_modules/postcss-discard-overridden/src/index.js b/node_modules/postcss-discard-overridden/src/index.js
deleted file mode 100644
index 97c8f62e..00000000
--- a/node_modules/postcss-discard-overridden/src/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-'use strict';
-const OVERRIDABLE_RULES = new Set(['keyframes', 'counter-style']);
-const SCOPE_RULES = new Set(['media', 'supports']);
-
-/**
- * @param {string} prop
- * @return {string}
- */
-function vendorUnprefixed(prop) {
- return prop.replace(/^-\w+-/, '');
-}
-
-/**
- * @param {string} name
- * @return {boolean}
- */
-function isOverridable(name) {
- return OVERRIDABLE_RULES.has(vendorUnprefixed(name.toLowerCase()));
-}
-
-/**
- * @param {string} name
- * @return {boolean}
- */
-function isScope(name) {
- return SCOPE_RULES.has(vendorUnprefixed(name.toLowerCase()));
-}
-
-/**
- * @param {import('postcss').AtRule} node
- * @return {string}
- */
-function getScope(node) {
- /** @type {import('postcss').Container<import('postcss').ChildNode> | import('postcss').Document | undefined} */
- let current = node.parent;
-
- const chain = [node.name.toLowerCase(), node.params];
-
- while (current) {
- if (
- current.type === 'atrule' &&
- isScope(/** @type import('postcss').AtRule */ (current).name)
- ) {
- chain.unshift(
- /** @type import('postcss').AtRule */ (current).name +
- ' ' +
- /** @type import('postcss').AtRule */ (current).params
- );
- }
- current = current.parent;
- }
-
- return chain.join('|');
-}
-
-/**
- * @type {import('postcss').PluginCreator<void>}
- * @return {import('postcss').Plugin}
- */
-function pluginCreator() {
- return {
- postcssPlugin: 'postcss-discard-overridden',
- prepare() {
- const cache = new Map();
- /** @type {{node: import('postcss').AtRule, scope: string}[]} */
- const rules = [];
-
- return {
- OnceExit(css) {
- css.walkAtRules((node) => {
- if (isOverridable(node.name)) {
- const scope = getScope(node);
-
- cache.set(scope, node);
- rules.push({
- node,
- scope,
- });
- }
- });
-
- rules.forEach((rule) => {
- if (cache.get(rule.scope) !== rule.node) {
- rule.node.remove();
- }
- });
- },
- };
- },
- };
-}
-
-pluginCreator.postcss = true;
-module.exports = pluginCreator;