Skip to content

Commit

Permalink
Fixes for deprecated context.fix call from stylelint. (#481)
Browse files Browse the repository at this point in the history
* Remove deprecated context.fix

* Remove deprecatd content.fix

* Fix all deprecated fix sites
  • Loading branch information
jonrohan authored Sep 18, 2024
1 parent 930e5f2 commit 7c79328
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 111 deletions.
44 changes: 16 additions & 28 deletions plugins/borders.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 =>
Expand Down Expand Up @@ -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()
})
}
}
Expand Down
39 changes: 15 additions & 24 deletions plugins/box-shadow.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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),
Expand All @@ -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,
})
})
}
}
Expand Down
6 changes: 0 additions & 6 deletions plugins/lib/variable-rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -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, {
Expand Down
46 changes: 16 additions & 30 deletions plugins/spacing.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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') {
Expand Down Expand Up @@ -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()
})
}
}
Expand Down
32 changes: 9 additions & 23 deletions plugins/typography.js
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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,
})
}
}
})
}
}
Expand Down

0 comments on commit 7c79328

Please sign in to comment.