eslint-plugin-es
Advanced tools
Comparing version 1.3.2 to 1.4.0
@@ -7,2 +7,4 @@ /** | ||
const { isOpeningBracketToken, isClosingBracketToken } = require("eslint-utils") | ||
module.exports = { | ||
@@ -17,3 +19,3 @@ meta: { | ||
}, | ||
fixable: null, | ||
fixable: "code", | ||
schema: [], | ||
@@ -25,2 +27,36 @@ messages: { | ||
create(context) { | ||
const sourceCode = context.getSourceCode() | ||
/** | ||
* Fixes a FunctionExpression node by making it into a longform property. | ||
* @param {SourceCodeFixer} fixer The fixer object | ||
* @param {ASTNode} node A `Property` node that has a `FunctionExpression` as its value | ||
* @returns {object} A fix for this node | ||
*/ | ||
function makeFunctionLongform(fixer, node) { | ||
const firstKeyToken = node.computed | ||
? sourceCode.getTokenBefore(node.key, isOpeningBracketToken) | ||
: sourceCode.getFirstToken(node.key) | ||
const lastKeyToken = node.computed | ||
? sourceCode.getTokenAfter(node.key, isClosingBracketToken) | ||
: sourceCode.getLastToken(node.key) | ||
const keyText = sourceCode.text.slice( | ||
firstKeyToken.range[0], | ||
lastKeyToken.range[1] | ||
) | ||
let functionHeader = "function" | ||
if (node.value.async) { | ||
functionHeader = `async ${functionHeader}` | ||
} | ||
if (node.value.generator) { | ||
functionHeader = `${functionHeader}*` | ||
} | ||
return fixer.replaceTextRange( | ||
[node.range[0], lastKeyToken.range[1]], | ||
`${keyText}: ${functionHeader}` | ||
) | ||
} | ||
return { | ||
@@ -30,3 +66,13 @@ "ObjectExpression > :matches(Property[method=true], Property[shorthand=true])"( | ||
) { | ||
context.report({ node, messageId: "forbidden" }) | ||
context.report({ | ||
node, | ||
messageId: "forbidden", | ||
fix: node.method | ||
? fixer => makeFunctionLongform(fixer, node) | ||
: fixer => | ||
fixer.insertTextAfter( | ||
node.key, | ||
`: ${node.key.name}` | ||
), | ||
}) | ||
}, | ||
@@ -33,0 +79,0 @@ } |
@@ -19,3 +19,3 @@ /** | ||
}, | ||
fixable: null, | ||
fixable: "code", | ||
schema: [], | ||
@@ -39,3 +39,9 @@ messages: { | ||
if (isCommaToken(token)) { | ||
context.report({ loc: token.loc, messageId: "forbidden" }) | ||
context.report({ | ||
loc: token.loc, | ||
messageId: "forbidden", | ||
fix(fixer) { | ||
return fixer.remove(token) | ||
}, | ||
}) | ||
} | ||
@@ -46,3 +52,9 @@ }, | ||
if (node.arguments.length >= 1 && isCommaToken(token)) { | ||
context.report({ loc: token.loc, messageId: "forbidden" }) | ||
context.report({ | ||
loc: token.loc, | ||
messageId: "forbidden", | ||
fix(fixer) { | ||
return fixer.remove(token) | ||
}, | ||
}) | ||
} | ||
@@ -49,0 +61,0 @@ }, |
{ | ||
"name": "eslint-plugin-es", | ||
"version": "1.3.2", | ||
"version": "1.4.0", | ||
"description": "ESLint plugin about ECMAScript syntactic features.", | ||
@@ -5,0 +5,0 @@ "engines": { |
126389
3791