mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-29 19:52:43 +00:00
Use import, run eslint
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
const stylelint = require('stylelint');
|
||||
const { isNumber } = require('stylelint/lib/utils/validateTypes.cjs');
|
||||
import stylelint from 'stylelint';
|
||||
import { isNumber } from 'stylelint/lib/utils/validateTypes.mjs';
|
||||
|
||||
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
||||
const ruleName = 'naturalcrit/declaration-block-multi-line-min-declarations';
|
||||
@@ -7,9 +7,8 @@ const messages = ruleMessages(ruleName, {
|
||||
expected : (decls)=>`Rule with ${decls} declaration${decls == 1 ? '' : 's'} should be single line`,
|
||||
});
|
||||
|
||||
|
||||
module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOption, secondaryOptionObject, context) {
|
||||
return function lint(postcssRoot, postcssResult) {
|
||||
const ruleFunction = (primaryOption, secondaryOptionObject, context)=>{
|
||||
return (postcssRoot, postcssResult)=>{
|
||||
|
||||
const validOptions = validateOptions(
|
||||
postcssResult,
|
||||
@@ -20,26 +19,23 @@ module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOpti
|
||||
}
|
||||
);
|
||||
|
||||
if(!validOptions) { //If the options are invalid, don't lint
|
||||
if(!validOptions) //If the options are invalid, don't lint
|
||||
return;
|
||||
}
|
||||
|
||||
const isAutoFixing = Boolean(context.fix);
|
||||
|
||||
postcssRoot.walkRules((rule)=>{ //Iterate CSS rules
|
||||
|
||||
//Apply rule only if all children are decls (no further nested rules)
|
||||
if(rule.nodes.length > primaryOption || !rule.nodes.every((node)=>node.type === 'decl')) {
|
||||
if(rule.nodes.length > primaryOption || !rule.nodes.every((node)=>node.type === 'decl'))
|
||||
return;
|
||||
}
|
||||
|
||||
//Ignore if already one line
|
||||
if(!rule.nodes.some((node)=>node.raws.before.includes('\n')) && !rule.raws.after.includes('\n'))
|
||||
return;
|
||||
|
||||
if(isAutoFixing) { //We are in “fix” mode
|
||||
rule.each((decl)=>{
|
||||
decl.raws.before = ' ';
|
||||
});
|
||||
rule.each((decl)=>decl.raws.before = ' ');
|
||||
rule.raws.after = ' ';
|
||||
} else {
|
||||
report({
|
||||
@@ -52,7 +48,9 @@ module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOpti
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.ruleName = ruleName;
|
||||
module.exports.messages = messages;
|
||||
ruleFunction.ruleName = ruleName;
|
||||
ruleFunction.messages = messages;
|
||||
|
||||
export default stylelint.createPlugin(ruleName, ruleFunction);
|
||||
|
||||
@@ -1,32 +1,29 @@
|
||||
const stylelint = require('stylelint');
|
||||
|
||||
import stylelint from 'stylelint';
|
||||
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
||||
|
||||
const ruleName = 'naturalcrit/declaration-colon-align';
|
||||
const messages = ruleMessages(ruleName, {
|
||||
expected : (rule)=>`Expected colons aligned within rule "${rule}"`,
|
||||
});
|
||||
|
||||
|
||||
module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOption, secondaryOptionObject, context) {
|
||||
return function lint(postcssRoot, postcssResult) {
|
||||
const ruleFunction = (primaryOption, secondaryOptionObject, context)=>{
|
||||
return (postcssRoot, postcssResult)=>{
|
||||
|
||||
const validOptions = validateOptions(
|
||||
postcssResult,
|
||||
ruleName,
|
||||
{
|
||||
actual : primaryOption,
|
||||
possible : [
|
||||
true,
|
||||
false
|
||||
]
|
||||
possible : [true, false]
|
||||
}
|
||||
);
|
||||
|
||||
if(!validOptions) { //If the options are invalid, don't lint
|
||||
if(!validOptions) // If the options are invalid, don't lint
|
||||
return;
|
||||
}
|
||||
|
||||
const isAutoFixing = Boolean(context.fix);
|
||||
postcssRoot.walkRules((rule)=>{ //Iterate CSS rules
|
||||
|
||||
postcssRoot.walkRules((rule)=>{ // Iterate CSS rules
|
||||
|
||||
let maxColonPos = 0;
|
||||
let misaligned = false;
|
||||
@@ -36,33 +33,37 @@ module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOpti
|
||||
return;
|
||||
|
||||
const colonPos = declaration.prop.length + declaration.raws.between.indexOf(':');
|
||||
if(maxColonPos > 0 && colonPos != maxColonPos) {
|
||||
|
||||
if(maxColonPos > 0 && colonPos != maxColonPos)
|
||||
misaligned = true;
|
||||
}
|
||||
|
||||
maxColonPos = Math.max(maxColonPos, colonPos);
|
||||
});
|
||||
|
||||
if(misaligned) {
|
||||
if(isAutoFixing) { //We are in “fix” mode
|
||||
rule.each((declaration)=>{
|
||||
if(declaration.type != 'decl')
|
||||
return;
|
||||
if(!misaligned)
|
||||
return;
|
||||
|
||||
declaration.raws.between = `${' '.repeat(maxColonPos - declaration.prop.length)}:${declaration.raws.between.split(':')[1]}`;
|
||||
});
|
||||
} else { //We are in “report only” mode
|
||||
report({
|
||||
ruleName,
|
||||
result : postcssResult,
|
||||
message : messages.expected(rule.selector), // Build the reported message
|
||||
node : rule, // Specify the reported node
|
||||
word : rule.selector, // Which exact word caused the error? This positions the error properly
|
||||
});
|
||||
}
|
||||
if(isAutoFixing) { // We are in “fix” mode
|
||||
rule.each((declaration)=>{
|
||||
if(declaration.type != 'decl')
|
||||
return;
|
||||
|
||||
declaration.raws.between = `${' '.repeat(maxColonPos - declaration.prop.length)}:${declaration.raws.between.split(':')[1]}`;
|
||||
});
|
||||
} else { // We are in “report only” mode
|
||||
report({
|
||||
ruleName,
|
||||
result : postcssResult,
|
||||
message : messages.expected(rule.selector), // Build the reported message
|
||||
node : rule, // Specify the reported node
|
||||
word : rule.selector, // Which exact word caused the error? This positions the error properly
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.ruleName = ruleName;
|
||||
module.exports.messages = messages;
|
||||
ruleFunction.ruleName = ruleName;
|
||||
ruleFunction.messages = messages;
|
||||
|
||||
export default stylelint.createPlugin(ruleName, ruleFunction);
|
||||
@@ -1,5 +1,5 @@
|
||||
const stylelint = require('stylelint');
|
||||
const { isNumber } = require('stylelint/lib/utils/validateTypes.cjs');
|
||||
import stylelint from 'stylelint';
|
||||
import { isNumber } from 'stylelint/lib/utils/validateTypes.mjs';
|
||||
|
||||
const { report, ruleMessages, validateOptions } = stylelint.utils;
|
||||
const ruleName = 'naturalcrit/declaration-colon-min-space-before';
|
||||
@@ -7,9 +7,8 @@ const messages = ruleMessages(ruleName, {
|
||||
expected : (num)=>`Expected at least ${num} space${num == 1 ? '' : 's'} before ":"`
|
||||
});
|
||||
|
||||
|
||||
module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOption, secondaryOptionObject, context) {
|
||||
return function lint(postcssRoot, postcssResult) {
|
||||
const ruleFunction = (primaryOption, secondaryOptionObject, context)=>{
|
||||
return (postcssRoot, postcssResult)=>{
|
||||
|
||||
const validOptions = validateOptions(
|
||||
postcssResult,
|
||||
@@ -30,9 +29,9 @@ module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOpti
|
||||
const between = decl.raws.between;
|
||||
const colonIndex = between.indexOf(':');
|
||||
|
||||
if(between.slice(0, colonIndex).length >= primaryOption) {
|
||||
if(between.slice(0, colonIndex).length >= primaryOption)
|
||||
return;
|
||||
}
|
||||
|
||||
if(isAutoFixing) { //We are in “fix” mode
|
||||
decl.raws.between = between.slice(0, colonIndex).replace(/\s*$/, ' '.repeat(primaryOption)) + between.slice(colonIndex);
|
||||
} else {
|
||||
@@ -46,7 +45,9 @@ module.exports = stylelint.createPlugin(ruleName, function getPlugin(primaryOpti
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.ruleName = ruleName;
|
||||
module.exports.messages = messages;
|
||||
ruleFunction.ruleName = ruleName;
|
||||
ruleFunction.messages = messages;
|
||||
|
||||
export default stylelint.createPlugin(ruleName, ruleFunction);
|
||||
Reference in New Issue
Block a user