eslint-plugin-early-return
Advanced tools
Comparing version 0.0.1 to 0.0.2
import { ESLintUtils, AST_NODE_TYPES } from '@typescript-eslint/utils'; | ||
var version = "0.0.1"; | ||
var version = "0.0.2"; | ||
@@ -18,3 +18,4 @@ const createRule = ESLintUtils.RuleCreator((name)=>`https://github.com/hyoban/eslint-plugin-early-return/blob/main/src/rules/${name}.`); | ||
type: 'suggestion', | ||
schema: [] | ||
schema: [], | ||
fixable: 'code' | ||
}, | ||
@@ -28,6 +29,15 @@ defaultOptions: [], | ||
} | ||
if (node.alternate.type === AST_NODE_TYPES.BlockStatement && node.alternate.body.some((statement)=>statement.type === AST_NODE_TYPES.ReturnStatement || statement.type === AST_NODE_TYPES.ThrowStatement)) { | ||
if (node.alternate.type === AST_NODE_TYPES.ReturnStatement || node.alternate.type === AST_NODE_TYPES.ThrowStatement || node.alternate.type === AST_NODE_TYPES.BlockStatement && node.alternate.body.some((statement)=>statement.type === AST_NODE_TYPES.ReturnStatement || statement.type === AST_NODE_TYPES.ThrowStatement)) { | ||
context.report({ | ||
node, | ||
messageId: 'preferEarlyReturn' | ||
node: node.alternate, | ||
messageId: 'preferEarlyReturn', | ||
fix (fixer) { | ||
const condition = context.sourceCode.getText(node.test); | ||
let ifText = context.sourceCode.getText(node.consequent); | ||
ifText = ifText.startsWith('{') && ifText.endsWith('}') ? ifText.replace(/^{/, '').replace(/}$/, '').replaceAll('\n ', '\n').slice(1, -1) : ` ${ifText}`; | ||
const elseText = context.sourceCode.getText(node.alternate); | ||
return [ | ||
fixer.replaceText(node, `if (!${condition}) ${elseText}\n${ifText}`) | ||
]; | ||
} | ||
}); | ||
@@ -34,0 +44,0 @@ } |
{ | ||
"name": "eslint-plugin-early-return", | ||
"type": "module", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"packageManager": "pnpm@8.15.3", | ||
@@ -6,0 +6,0 @@ "description": "Prefer early return pattern to clean if else statement", |
Sorry, the diff of this file is not supported yet
9441
122