+++ /dev/null
-/* @flow */
-"use strict";
-
-const autoprefixer = require("autoprefixer");
-const Browsers = require("autoprefixer/lib/browsers");
-const Prefixes = require("autoprefixer/lib/prefixes");
-
-/**
- * Use Autoprefixer's secret powers to determine whether or
- * not a certain CSS identifier contains a vendor prefix that
- * Autoprefixer, given the standardized identifier, could add itself.
- *
- * Used by `*-no-vendor-prefix-*` rules to find superfluous
- * vendor prefixes.
- */
-
-const prefixes = new Prefixes(
- autoprefixer.data.prefixes,
- new Browsers(autoprefixer.data.browsers, [])
-);
-
-/**
- * Most identifier types have to be looked up in a unique way,
- * so we're exposing special functions for each.
- */
-module.exports = {
- atRuleName(identifier /*: string*/) /*: boolean*/ {
- return prefixes.remove[`@${identifier.toLowerCase()}`];
- },
-
- selector(identifier /*: string*/) /*: boolean*/ {
- return prefixes.remove.selectors.some(selectorObj => {
- return identifier.toLowerCase() === selectorObj.prefixed;
- });
- },
-
- mediaFeatureName(identifier /*: string*/) /*: boolean*/ {
- return identifier.toLowerCase().indexOf("device-pixel-ratio") !== -1;
- },
-
- property(identifier /*: string*/) /*: boolean*/ {
- return autoprefixer.data.prefixes[
- prefixes.unprefixed(identifier.toLowerCase())
- ];
- },
-
- propertyValue(prop /*: string*/, value /*: string*/) /*: boolean*/ {
- const possiblePrefixableValues =
- prefixes.remove[prop.toLowerCase()] &&
- prefixes.remove[prop.toLowerCase()].values;
- return (
- possiblePrefixableValues &&
- possiblePrefixableValues.some(valueObj => {
- return value.toLowerCase() === valueObj.prefixed;
- })
- );
- }
-};