From 7c79328dcbfe9da50689ab25d6d1735520364f8e Mon Sep 17 00:00:00 2001 From: Jon Rohan Date: Wed, 18 Sep 2024 14:57:48 -0700 Subject: [PATCH] Fixes for deprecated context.fix call from stylelint. (#481) * Remove deprecated context.fix * Remove deprecatd content.fix * Fix all deprecated fix sites --- plugins/borders.js | 44 ++++++++++++--------------------- plugins/box-shadow.js | 39 ++++++++++++----------------- plugins/lib/variable-rules.js | 6 ----- plugins/spacing.js | 46 ++++++++++++----------------------- plugins/typography.js | 32 +++++++----------------- 5 files changed, 56 insertions(+), 111 deletions(-) diff --git a/plugins/borders.js b/plugins/borders.js index c483e0f1..6d908d74 100644 --- a/plugins/borders.js +++ b/plugins/borders.js @@ -59,7 +59,7 @@ for (const variable of variables) { } /** @type {import('stylelint').Rule} */ -const ruleFunction = (primary, secondaryOptions, context) => { +const ruleFunction = primary => { return (root, result) => { const validOptions = validateOptions(result, ruleName, { actual: primary, @@ -75,8 +75,6 @@ const ruleFunction = (primary, secondaryOptions, context) => { if (/^border(-(top|right|bottom|left|block-start|block-end|inline-start|inline-end))?-color$/.test(prop)) return if (valueList.some(valueToIgnore => value.includes(valueToIgnore))) return - const problems = [] - const parsedValue = walkGroups(valueParser(value), node => { const checkForVariable = (vars, nodeValue) => vars.some(variable => @@ -154,36 +152,26 @@ const ruleFunction = (primary, secondaryOptions, context) => { variable.values.includes(node.value.replace('-', '')), ) const fixable = replacement && valueUnit && !valueUnit.number.includes('-') - - if (fixable && context.fix) { - node.value = node.value.replace(node.value, `var(${replacement['name']})`) - } else { - problems.push({ - index: declarationValueIndex(declNode) + node.sourceIndex, - endIndex: declarationValueIndex(declNode) + node.sourceIndex + node.value.length, - message: messages.rejected(node.value, replacement, prop), - }) + let fix = undefined + if (fixable) { + fix = () => { + node.value = node.value.replace(node.value, `var(${replacement['name']})`) + } } + report({ + index: declarationValueIndex(declNode) + node.sourceIndex, + endIndex: declarationValueIndex(declNode) + node.sourceIndex + node.value.length, + message: messages.rejected(node.value, replacement, prop), + node: declNode, + result, + ruleName, + fix, + }) return }) - if (context.fix) { - declNode.value = parsedValue.toString() - } - - if (problems.length) { - for (const err of problems) { - report({ - index: err.index, - endIndex: err.endIndex, - message: err.message, - node: declNode, - result, - ruleName, - }) - } - } + declNode.value = parsedValue.toString() }) } } diff --git a/plugins/box-shadow.js b/plugins/box-shadow.js index 66cf672c..97214f61 100644 --- a/plugins/box-shadow.js +++ b/plugins/box-shadow.js @@ -32,7 +32,7 @@ for (const variable of variables) { } /** @type {import('stylelint').Rule} */ -const ruleFunction = (primary, secondaryOptions, context) => { +const ruleFunction = primary => { return (root, result) => { const validOptions = validateOptions(result, ruleName, { actual: primary, @@ -49,8 +49,6 @@ const ruleFunction = (primary, secondaryOptions, context) => { if (value === 'none') return - const problems = [] - const checkForVariable = (vars, nodeValue) => { return vars.some(variable => new RegExp(`${variable['name'].replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`).test(nodeValue), @@ -62,29 +60,22 @@ const ruleFunction = (primary, secondaryOptions, context) => { } const replacement = validValues.find(variable => variable.values.includes(value)) - - if (replacement && context.fix) { - declNode.value = value.replace(value, `var(${replacement['name']})`) - } else { - problems.push({ - index: declarationValueIndex(declNode), - endIndex: declarationValueIndex(declNode) + value.length, - message: messages.rejected(value, replacement), - }) - } - - if (problems.length) { - for (const err of problems) { - report({ - index: err.index, - endIndex: err.endIndex, - message: err.message, - node: declNode, - result, - ruleName, - }) + let fix = undefined + if (replacement) { + fix = () => { + declNode.value = value.replace(value, `var(${replacement['name']})`) } } + + report({ + index: declarationValueIndex(declNode), + endIndex: declarationValueIndex(declNode) + value.length, + message: messages.rejected(value, replacement), + node: declNode, + result, + ruleName, + fix, + }) }) } } diff --git a/plugins/lib/variable-rules.js b/plugins/lib/variable-rules.js index 6c782939..12fe3e28 100644 --- a/plugins/lib/variable-rules.js +++ b/plugins/lib/variable-rules.js @@ -46,16 +46,10 @@ export function createVariableRule(ruleName, rules, url) { const validated = validate(decl) const {valid, fixable, replacement, errors} = validated if (valid) { - // eslint-disable-next-line no-console - if (verbose) console.warn(`valid: "${decl.toString()}" in: "${rule.selector}"`) return } else if (fixEnabled && fixable) { - // eslint-disable-next-line no-console - if (verbose) console.warn(` fixed: ${replacement}`) decl.value = replacement } else { - // eslint-disable-next-line no-console - if (verbose) console.warn(` ${errors.length} error(s)`) for (const error of errors) { const message = stylelint.utils .ruleMessages(ruleName, { diff --git a/plugins/spacing.js b/plugins/spacing.js index e4563ea9..6c978028 100644 --- a/plugins/spacing.js +++ b/plugins/spacing.js @@ -37,7 +37,7 @@ for (const size of sizes) { } /** @type {import('stylelint').Rule} */ -const ruleFunction = (primary, secondaryOptions, context) => { +const ruleFunction = primary => { return (root, result) => { const validOptions = validateOptions(result, ruleName, { actual: primary, @@ -52,8 +52,6 @@ const ruleFunction = (primary, secondaryOptions, context) => { if (!propList.some(spacingProp => prop.startsWith(spacingProp))) return if (valueList.some(valueToIgnore => value.includes(valueToIgnore))) return - const problems = [] - const parsedValue = walkGroups(valueParser(value), node => { // Only check word types. https://github.com/TrySound/postcss-value-parser#word if (node.type !== 'word') { @@ -87,36 +85,24 @@ const ruleFunction = (primary, secondaryOptions, context) => { const replacement = sizes.find(variable => variable.values.includes(node.value.replace('-', ''))) const fixable = replacement && valueUnit && !valueUnit.number.includes('-') - - if (fixable && context.fix) { - node.value = node.value.replace(node.value, `var(${replacement['name']})`) - } else { - problems.push({ - index: declarationValueIndex(declNode) + node.sourceIndex, - endIndex: declarationValueIndex(declNode) + node.sourceIndex + node.value.length, - message: messages.rejected(node.value, replacement), - }) + let fix = undefined + if (fixable) { + fix = () => { + node.value = node.value.replace(node.value, `var(${replacement['name']})`) + } } - - return + report({ + index: declarationValueIndex(declNode) + node.sourceIndex, + endIndex: declarationValueIndex(declNode) + node.sourceIndex + node.value.length, + message: messages.rejected(node.value, replacement), + node: declNode, + result, + ruleName, + fix, + }) }) - if (context.fix) { - declNode.value = parsedValue.toString() - } - - if (problems.length) { - for (const err of problems) { - report({ - index: err.index, - endIndex: err.endIndex, - message: err.message, - node: declNode, - result, - ruleName, - }) - } - } + declNode.value = parsedValue.toString() }) } } diff --git a/plugins/typography.js b/plugins/typography.js index 99d7d62e..4b05af71 100644 --- a/plugins/typography.js +++ b/plugins/typography.js @@ -87,8 +87,6 @@ const ruleFunction = primary => { if (!propList.some(typographyProp => prop === typographyProp)) return - const problems = [] - const checkForVariable = (vars, nodeValue) => vars.some(variable => new RegExp(`${variable['name'].replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`).test(nodeValue), @@ -146,34 +144,22 @@ const ruleFunction = primary => { } const replacement = getReplacements() const fixable = replacement && !replacement.length - let fixedValue = '' + let fix = undefined if (fixable) { - fixedValue = value.replace(value, `var(${replacement['name']})`) + fix = () => { + declNode.value = value.replace(value, `var(${replacement['name']})`) + } } - problems.push({ + report({ index: declarationValueIndex(declNode), endIndex: declarationValueIndex(declNode) + value.length, message: messages.rejected(value, replacement, prop), - fix: () => { - if (!fixable) return - declNode.value = fixedValue - }, + node: declNode, + result, + ruleName, + fix, }) - - if (problems.length) { - for (const err of problems) { - report({ - index: err.index, - endIndex: err.endIndex, - message: err.message, - node: declNode, - result, - ruleName, - fix: err.fix, - }) - } - } }) } }