mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-07 04:26:32 +08:00
This reverts commit2b4a9df2d9. Reason for revert: subsequent presubmit uploads should be fixed now. Original change's description: > Revert "Reland "Update stylelint to 14.0.1"" > > This reverts commitf2ea2c940d. > > 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 commit6c0f161c95. > > > > 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 commit1e08ee816b. > > > > > > 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>
152 lines
3.9 KiB
JavaScript
152 lines
3.9 KiB
JavaScript
// @ts-nocheck
|
|
|
|
'use strict';
|
|
|
|
const atRuleParamIndex = require('../../utils/atRuleParamIndex');
|
|
const declarationValueIndex = require('../../utils/declarationValueIndex');
|
|
const getUnitFromValueNode = require('../../utils/getUnitFromValueNode');
|
|
const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
|
|
const isStandardSyntaxDeclaration = require('../../utils/isStandardSyntaxDeclaration');
|
|
const keywordSets = require('../../reference/keywordSets');
|
|
const mediaParser = require('postcss-media-query-parser').default;
|
|
const optionsMatches = require('../../utils/optionsMatches');
|
|
const report = require('../../utils/report');
|
|
const ruleMessages = require('../../utils/ruleMessages');
|
|
const validateOptions = require('../../utils/validateOptions');
|
|
const valueParser = require('postcss-value-parser');
|
|
const vendor = require('../../utils/vendor');
|
|
const { isRegExp, isString } = require('../../utils/validateTypes');
|
|
|
|
const ruleName = 'unit-no-unknown';
|
|
|
|
const messages = ruleMessages(ruleName, {
|
|
rejected: (unit) => `Unexpected unknown unit "${unit}"`,
|
|
});
|
|
|
|
function rule(actual, options) {
|
|
return (root, result) => {
|
|
const validOptions = validateOptions(
|
|
result,
|
|
ruleName,
|
|
{ actual },
|
|
{
|
|
actual: options,
|
|
possible: {
|
|
ignoreUnits: [isString, isRegExp],
|
|
ignoreFunctions: [isString, isRegExp],
|
|
},
|
|
optional: true,
|
|
},
|
|
);
|
|
|
|
if (!validOptions) {
|
|
return;
|
|
}
|
|
|
|
function check(node, value, getIndex) {
|
|
// make sure multiplication operations (*) are divided - not handled
|
|
// by postcss-value-parser
|
|
value = value.replace(/\*/g, ',');
|
|
const parsedValue = valueParser(value);
|
|
|
|
parsedValue.walk((valueNode) => {
|
|
// Ignore wrong units within `url` function
|
|
// and within functions listed in the `ignoreFunctions` option
|
|
if (
|
|
valueNode.type === 'function' &&
|
|
(valueNode.value.toLowerCase() === 'url' ||
|
|
optionsMatches(options, 'ignoreFunctions', valueNode.value))
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
const unit = getUnitFromValueNode(valueNode);
|
|
|
|
if (!unit) {
|
|
return;
|
|
}
|
|
|
|
if (optionsMatches(options, 'ignoreUnits', unit)) {
|
|
return;
|
|
}
|
|
|
|
if (keywordSets.units.has(unit.toLowerCase()) && unit.toLowerCase() !== 'x') {
|
|
return;
|
|
}
|
|
|
|
if (unit.toLowerCase() === 'x') {
|
|
if (
|
|
node.type === 'atrule' &&
|
|
node.name === 'media' &&
|
|
node.params.toLowerCase().includes('resolution')
|
|
) {
|
|
let ignoreUnit = false;
|
|
|
|
mediaParser(node.params).walk((mediaNode, i, mediaNodes) => {
|
|
const lastMediaNode = mediaNodes[mediaNodes.length - 1];
|
|
|
|
if (
|
|
mediaNode.value.toLowerCase().includes('resolution') &&
|
|
lastMediaNode.sourceIndex === valueNode.sourceIndex
|
|
) {
|
|
ignoreUnit = true;
|
|
|
|
return false;
|
|
}
|
|
});
|
|
|
|
if (ignoreUnit) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (node.type === 'decl') {
|
|
if (node.prop.toLowerCase() === 'image-resolution') {
|
|
return;
|
|
}
|
|
|
|
if (/^(?:-webkit-)?image-set[\s(]/i.test(value)) {
|
|
const imageSet = parsedValue.nodes.find(
|
|
(n) => vendor.unprefixed(n.value) === 'image-set',
|
|
);
|
|
const imageSetLastNode = imageSet.nodes[imageSet.nodes.length - 1];
|
|
const imageSetValueLastIndex = imageSetLastNode.sourceIndex;
|
|
|
|
if (imageSetValueLastIndex >= valueNode.sourceIndex) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
report({
|
|
index: getIndex(node) + valueNode.sourceIndex,
|
|
message: messages.rejected(unit),
|
|
node,
|
|
result,
|
|
ruleName,
|
|
});
|
|
});
|
|
}
|
|
|
|
root.walkAtRules(/^media$/i, (atRule) => {
|
|
if (!isStandardSyntaxAtRule(atRule)) {
|
|
return;
|
|
}
|
|
|
|
check(atRule, atRule.params, atRuleParamIndex);
|
|
});
|
|
root.walkDecls((decl) => {
|
|
if (!isStandardSyntaxDeclaration(decl)) {
|
|
return;
|
|
}
|
|
|
|
check(decl, decl.value, declarationValueIndex);
|
|
});
|
|
};
|
|
}
|
|
|
|
rule.ruleName = ruleName;
|
|
rule.messages = messages;
|
|
module.exports = rule;
|