Files
react-native-devtools-frontend/node_modules/stylelint/lib/utils/isAutoprefixable.js
T
Tim van der Lippe 16b822804c Reland "Reland "Update stylelint to 14.0.1""
This reverts commit 2b4a9df2d9.

Reason for revert: subsequent presubmit uploads should be fixed now.

Original change's description:
> Revert "Reland "Update stylelint to 14.0.1""
>
> This reverts commit f2ea2c940d.
>
> Reason for revert: https://ci.chromium.org/ui/p/devtools-frontend/builders/try/dtf_presubmit_linux/b8831129368825517985/overview
>
> Original change's description:
> > Reland "Update stylelint to 14.0.1"
> >
> > This reverts commit 6c0f161c95.
> >
> > Reason for revert: the prerequisite CL (https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3259703) has landed
> >
> > Original change's description:
> > > Revert "Update stylelint to 14.0.1"
> > >
> > > This reverts commit 1e08ee816b.
> > >
> > > Reason for revert: tree is closed due to errors https://ci.chromium.org/ui/p/devtools-frontend/builders/ci/Stand-alone%20Linux/8169/overview
> > >
> > > Original change's description:
> > > > Update stylelint to 14.0.1
> > > >
> > > > This also upgrades PostCSS to 8.3.11.
> > > >
> > > > DISABLE_THIRD_PARTY_CHECK=Updating Stylelint configuration
> > > > R=​szuend@chromium.org
> > > >
> > > > Bug: none
> > > > Change-Id: I606540b03509d7c6e73f3d490327cd4174e03d31
> > > > Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3259541
> > > > Reviewed-by: Simon Zünd <szuend@chromium.org>
> > > > Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
> > >
> > > Bug: none
> > > Change-Id: Icb1c02b41dbccc3b4fc5760f5dd0b78eca078b61
> > > No-Presubmit: true
> > > No-Tree-Checks: true
> > > No-Try: true
> > > Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3263399
> > > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> > > Owners-Override: Alex Rudenko <alexrudenko@chromium.org>
> > > Commit-Queue: Alex Rudenko <alexrudenko@chromium.org>
> >
> > DISABLE_THIRD_PARTY_CHECK=Updating Stylelint configuration
> >
> > Bug: none
> > Change-Id: If132a67ee4253d27114caedd66c5ee61c774a6c7
> > Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3264206
> > Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
> > Reviewed-by: Simon Zünd <szuend@chromium.org>
> > Reviewed-by: Alex Rudenko <alexrudenko@chromium.org>
>
> Bug: none
> Change-Id: Idc6c9f5cc1e225c752799461eb0344e94b4ad1e5
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3264222
> Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>

DISABLE_THIRD_PARTY_CHECK=Updating Stylelint configuration

Bug: none
Change-Id: I609941d48b46bfcf454b03dcc75a76d460fbe674
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3264223
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
2021-11-08 14:47:39 +00:00

340 lines
7.2 KiB
JavaScript

'use strict';
const vendor = require('./vendor');
/**
* Extract each list using the internal API of Autoprefixer 10.2.5.
*
* @see https://github.com/postcss/autoprefixer/tree/10.2.5
*
* @example
* const autoprefixer = require('autoprefixer');
* const Browsers = require('autoprefixer/lib/browsers');
* const Prefixes = require('autoprefixer/lib/prefixes');
* const utils = require('autoprefixer/lib/utils');
*
* const prefixes = new Prefixes(autoprefixer.data.prefixes, new Browsers(autoprefixer.data.browsers, []));
*/
/**
* @example
* Object.keys(prefixes.remove).filter((s) => s.startsWith('@'));
*/
const AT_RULES = new Set([
'@-khtml-keyframes',
'@-moz-keyframes',
'@-ms-keyframes',
'@-ms-viewport',
'@-o-keyframes',
'@-o-viewport',
'@-webkit-keyframes',
'@resolution',
]);
/**
* @example
* prefixes.remove.selectors.map((s) => s.prefixed);
*/
const SELECTORS = new Set([
':-moz-any-link',
':-moz-full-screen',
':-moz-placeholder',
':-moz-placeholder-shown',
':-moz-read-only',
':-moz-read-write',
':-ms-fullscreen',
':-ms-input-placeholder',
':-webkit-any-link',
':-webkit-full-screen',
'::-moz-placeholder',
'::-moz-selection',
'::-ms-input-placeholder',
'::-webkit-backdrop',
'::-webkit-input-placeholder',
]);
/**
* @example
* Object.entries(autoprefixer.data.prefixes)
* .filter(([key, value]) => !value.selector && !value.props && !key.startsWith('@'))
* .map(([key, value]) => key);
*/
const PROPERTIES = new Set([
'align-content',
'align-items',
'align-self',
'animation',
'animation-delay',
'animation-direction',
'animation-duration',
'animation-fill-mode',
'animation-iteration-count',
'animation-name',
'animation-play-state',
'animation-timing-function',
'appearance',
'backdrop-filter',
'backface-visibility',
'background-clip',
'background-origin',
'background-size',
'border-block-end',
'border-block-start',
'border-bottom-left-radius',
'border-bottom-right-radius',
'border-image',
'border-inline-end',
'border-inline-start',
'border-radius',
'border-top-left-radius',
'border-top-right-radius',
'box-decoration-break',
'box-shadow',
'box-sizing',
'break-after',
'break-before',
'break-inside',
'clip-path',
'color-adjust',
'column-count',
'column-fill',
'column-gap',
'column-rule',
'column-rule-color',
'column-rule-style',
'column-rule-width',
'column-span',
'column-width',
'columns',
'filter',
'flex',
'flex-basis',
'flex-direction',
'flex-flow',
'flex-grow',
'flex-shrink',
'flex-wrap',
'flow-from',
'flow-into',
'font-feature-settings',
'font-kerning',
'font-language-override',
'font-variant-ligatures',
'grid-area',
'grid-column',
'grid-column-align',
'grid-column-end',
'grid-column-start',
'grid-row',
'grid-row-align',
'grid-row-end',
'grid-row-start',
'grid-template',
'grid-template-areas',
'grid-template-columns',
'grid-template-rows',
'hyphens',
'image-rendering',
'justify-content',
'margin-block-end',
'margin-block-start',
'margin-inline-end',
'margin-inline-start',
'mask',
'mask-border',
'mask-border-outset',
'mask-border-repeat',
'mask-border-slice',
'mask-border-source',
'mask-border-width',
'mask-clip',
'mask-composite',
'mask-image',
'mask-origin',
'mask-position',
'mask-repeat',
'mask-size',
'object-fit',
'object-position',
'order',
'overscroll-behavior',
'padding-block-end',
'padding-block-start',
'padding-inline-end',
'padding-inline-start',
'perspective',
'perspective-origin',
'place-self',
'region-fragment',
'scroll-snap-coordinate',
'scroll-snap-destination',
'scroll-snap-points-x',
'scroll-snap-points-y',
'scroll-snap-type',
'shape-image-threshold',
'shape-margin',
'shape-outside',
'tab-size',
'text-align-last',
'text-decoration',
'text-decoration-color',
'text-decoration-line',
'text-decoration-skip',
'text-decoration-skip-ink',
'text-decoration-style',
'text-emphasis',
'text-emphasis-color',
'text-emphasis-position',
'text-emphasis-style',
'text-orientation',
'text-overflow',
'text-size-adjust',
'text-spacing',
'touch-action',
'transform',
'transform-origin',
'transform-style',
'transition',
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
'user-select',
'writing-mode',
]);
/**
* @example
* Object.values(prefixes.remove)
* .filter((p) => Array.isArray(p.values))
* .flatMap((p) => p.values)
* .map((p) => utils.removeNote(p.prefixed)) // normalize '-webkit- old'
* .filter((p) => !p.endsWith('-')); // remove '-webkit-' only
*
* @see https://github.com/stylelint/stylelint/pull/5312/files#r636018013
*/
const PROPERTY_VALUES = new Set([
'-moz-available',
'-moz-box',
'-moz-calc',
'-moz-crisp-edges',
'-moz-element',
'-moz-fit-content',
'-moz-grab',
'-moz-grabbing',
'-moz-inline-box',
'-moz-isolate',
'-moz-isolate-override',
'-moz-linear-gradient',
'-moz-max-content',
'-moz-min-content',
'-moz-plaintext',
'-moz-radial-gradient',
'-moz-repeating-linear-gradient',
'-moz-repeating-radial-gradient',
'-moz-zoom-in',
'-moz-zoom-out',
'-ms-flexbox',
'-ms-grid',
'-ms-inline-flexbox',
'-ms-inline-grid',
'-ms-linear-gradient',
'-ms-radial-gradient',
'-ms-repeating-linear-gradient',
'-ms-repeating-radial-gradient',
'-o-linear-gradient',
'-o-pixelated',
'-o-radial-gradient',
'-o-repeating-linear-gradient',
'-o-repeating-radial-gradient',
'-webkit-box',
'-webkit-calc',
'-webkit-cross-fade',
'-webkit-fill-available',
'-webkit-filter',
'-webkit-fit-content',
'-webkit-flex',
'-webkit-grab',
'-webkit-grabbing',
'-webkit-image-set',
'-webkit-inline-box',
'-webkit-inline-flex',
'-webkit-isolate',
'-webkit-linear-gradient',
'-webkit-max-content',
'-webkit-min-content',
'-webkit-optimize-contrast',
'-webkit-radial-gradient',
'-webkit-repeating-linear-gradient',
'-webkit-repeating-radial-gradient',
'-webkit-sticky',
'-webkit-zoom-in',
'-webkit-zoom-out',
]);
/**
* Most identifier types have to be looked up in a unique way,
* so we're exposing special functions for each.
*/
module.exports = {
/**
* @param {string} identifier
* @returns {boolean}
*/
atRuleName(identifier) {
return AT_RULES.has(`@${identifier.toLowerCase()}`);
},
/**
* @param {string} identifier
* @returns {boolean}
*/
selector(identifier) {
return SELECTORS.has(identifier.toLowerCase());
},
/**
* @param {string} identifier
* @returns {boolean}
*/
mediaFeatureName(identifier) {
return identifier.toLowerCase().includes('device-pixel-ratio');
},
/**
* @param {string} identifier
* @returns {boolean}
*/
property(identifier) {
const ident = identifier.toLowerCase();
// HACK: `interpolation-mode` does not exist. This is an IE extension for `image-rendering`.
// See <https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering#examples>
if (ident === '-ms-interpolation-mode') {
return true;
}
if (vendor.prefix(ident).length === 0) {
return false;
}
return PROPERTIES.has(vendor.unprefixed(ident));
},
/**
* @param {string} value
* @returns {boolean}
*/
propertyValue(value) {
return PROPERTY_VALUES.has(value.toLowerCase());
},
/**
* @param {string} value
* @returns {string}
*/
unprefix(value) {
return value.replace(/-\w+-/, '');
},
};