From 2990873ff8af73b31b40a63f1a40670fb753e179 Mon Sep 17 00:00:00 2001 From: Macklin Underdown Date: Wed, 7 Feb 2018 17:54:31 -0500 Subject: [PATCH] chore: add eslint-plugin-eslint-plugin --- .eslintrc.js | 8 +++- package.json | 1 + rules/prefer_to_be_null.js | 53 ++++++++++++----------- rules/prefer_to_be_undefined.js | 57 +++++++++++++------------ rules/prefer_to_have_length.js | 75 ++++++++++++++++++--------------- yarn.lock | 4 ++ 6 files changed, 111 insertions(+), 87 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fe8547fda..182cb83b1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,8 +3,12 @@ const globals = require('./index').environments.globals.globals; module.exports = { - extends: ['eslint:recommended', 'prettier'], - plugins: ['prettier'], + extends: [ + 'eslint:recommended', + 'plugin:eslint-plugin/recommended', + 'prettier', + ], + plugins: ['eslint-plugin', 'prettier'], parserOptions: { ecmaVersion: 2017, }, diff --git a/package.json b/package.json index 01c840750..af71e82fe 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@commitlint/config-conventional": "^6.0.2", "eslint": "^4.10.0", "eslint-config-prettier": "^2.7.0", + "eslint-plugin-eslint-plugin": "^1.4.0", "eslint-plugin-prettier": "^2.3.1", "husky": "^0.14.3", "jest": "^22.0.4", diff --git a/rules/prefer_to_be_null.js b/rules/prefer_to_be_null.js index 7160fb318..b7f4c8fbe 100644 --- a/rules/prefer_to_be_null.js +++ b/rules/prefer_to_be_null.js @@ -8,31 +8,36 @@ const expectNotToBeCase = require('./util').expectNotToBeCase; const method = require('./util').method; const method2 = require('./util').method2; -module.exports = context => { - return { - CallExpression(node) { - const is = expectToBeCase(node, null) || expectToEqualCase(node, null); - const isNot = - expectNotToEqualCase(node, null) || expectNotToBeCase(node, null); +module.exports = { + meta: { + fixable: 'code', + }, + create(context) { + return { + CallExpression(node) { + const is = expectToBeCase(node, null) || expectToEqualCase(node, null); + const isNot = + expectNotToEqualCase(node, null) || expectNotToBeCase(node, null); - if (is || isNot) { - context.report({ - fix(fixer) { - if (is) { + if (is || isNot) { + context.report({ + fix(fixer) { + if (is) { + return [ + fixer.replaceText(method(node), 'toBeNull'), + fixer.remove(argument(node)), + ]; + } return [ - fixer.replaceText(method(node), 'toBeNull'), - fixer.remove(argument(node)), + fixer.replaceText(method2(node), 'toBeNull'), + fixer.remove(argument2(node)), ]; - } - return [ - fixer.replaceText(method2(node), 'toBeNull'), - fixer.remove(argument2(node)), - ]; - }, - message: 'Use toBeNull() instead', - node: is ? method(node) : method2(node), - }); - } - }, - }; + }, + message: 'Use toBeNull() instead', + node: is ? method(node) : method2(node), + }); + } + }, + }; + }, }; diff --git a/rules/prefer_to_be_undefined.js b/rules/prefer_to_be_undefined.js index 852b005fb..4c516e97c 100644 --- a/rules/prefer_to_be_undefined.js +++ b/rules/prefer_to_be_undefined.js @@ -8,33 +8,38 @@ const expectNotToEqualCase = require('./util').expectNotToEqualCase; const method = require('./util').method; const method2 = require('./util').method2; -module.exports = context => { - return { - CallExpression(node) { - const is = - expectToBeCase(node, undefined) || expectToEqualCase(node, undefined); - const isNot = - expectNotToEqualCase(node, undefined) || - expectNotToBeCase(node, undefined); +module.exports = { + meta: { + fixable: 'code', + }, + create(context) { + return { + CallExpression(node) { + const is = + expectToBeCase(node, undefined) || expectToEqualCase(node, undefined); + const isNot = + expectNotToEqualCase(node, undefined) || + expectNotToBeCase(node, undefined); - if (is || isNot) { - context.report({ - fix(fixer) { - if (is) { + if (is || isNot) { + context.report({ + fix(fixer) { + if (is) { + return [ + fixer.replaceText(method(node), 'toBeUndefined'), + fixer.remove(argument(node)), + ]; + } return [ - fixer.replaceText(method(node), 'toBeUndefined'), - fixer.remove(argument(node)), + fixer.replaceText(method2(node), 'toBeUndefined'), + fixer.remove(argument2(node)), ]; - } - return [ - fixer.replaceText(method2(node), 'toBeUndefined'), - fixer.remove(argument2(node)), - ]; - }, - message: 'Use toBeUndefined() instead', - node: is ? method(node) : method2(node), - }); - } - }, - }; + }, + message: 'Use toBeUndefined() instead', + node: is ? method(node) : method2(node), + }); + } + }, + }; + }, }; diff --git a/rules/prefer_to_have_length.js b/rules/prefer_to_have_length.js index a8f58321f..7810cbd05 100644 --- a/rules/prefer_to_have_length.js +++ b/rules/prefer_to_have_length.js @@ -5,39 +5,44 @@ const expectResolveCase = require('./util').expectResolveCase; const expectRejectCase = require('./util').expectRejectCase; const method = require('./util').method; -module.exports = context => { - return { - CallExpression(node) { - if ( - !( - expectNotCase(node) || - expectResolveCase(node) || - expectRejectCase(node) - ) && - expectCase(node) && - (method(node).name === 'toBe' || method(node).name === 'toEqual') && - node.arguments[0].property && - node.arguments[0].property.name === 'length' - ) { - const propertyDot = context - .getSourceCode() - .getFirstTokenBetween( - node.arguments[0].object, - node.arguments[0].property, - token => token.value === '.' - ); - context.report({ - fix(fixer) { - return [ - fixer.remove(propertyDot), - fixer.remove(node.arguments[0].property), - fixer.replaceText(method(node), 'toHaveLength'), - ]; - }, - message: 'Use toHaveLength() instead', - node: method(node), - }); - } - }, - }; +module.exports = { + meta: { + fixable: 'code', + }, + create(context) { + return { + CallExpression(node) { + if ( + !( + expectNotCase(node) || + expectResolveCase(node) || + expectRejectCase(node) + ) && + expectCase(node) && + (method(node).name === 'toBe' || method(node).name === 'toEqual') && + node.arguments[0].property && + node.arguments[0].property.name === 'length' + ) { + const propertyDot = context + .getSourceCode() + .getFirstTokenBetween( + node.arguments[0].object, + node.arguments[0].property, + token => token.value === '.' + ); + context.report({ + fix(fixer) { + return [ + fixer.remove(propertyDot), + fixer.remove(node.arguments[0].property), + fixer.replaceText(method(node), 'toHaveLength'), + ]; + }, + message: 'Use toHaveLength() instead', + node: method(node), + }); + } + }, + }; + }, }; diff --git a/yarn.lock b/yarn.lock index 5e8929292..deef4ab74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1587,6 +1587,10 @@ eslint-config-prettier@^2.7.0: dependencies: get-stdin "^5.0.1" +eslint-plugin-eslint-plugin@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-1.4.0.tgz#382dc6692a741a52072d5f3fff5dacdcf291ef49" + eslint-plugin-prettier@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.4.0.tgz#85cab0775c6d5e3344ef01e78d960f166fb93aae"