From 7b586864c220adef25b6b24d56a43d4f1a2b0a72 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Mon, 26 Jul 2021 19:58:47 -0700 Subject: [PATCH 1/5] Chore: Adopt `eslint-plugin/prefer-message-ids` rule internally https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-message-ids.md --- .eslintrc.js | 4 +- package.json | 2 +- .../consistent-meta-messages.js | 38 --------- .../consistent-meta-messages.js | 80 ------------------- 4 files changed, 3 insertions(+), 121 deletions(-) delete mode 100644 tests/tools/internal-rules/consistent-meta-messages.js delete mode 100644 tools/internal-rules/consistent-meta-messages.js diff --git a/.eslintrc.js b/.eslintrc.js index a7e0f1153d8..62ec73f7f2c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -66,6 +66,7 @@ module.exports = { rules: { "eslint-plugin/consistent-output": "error", "eslint-plugin/no-deprecated-context-methods": "error", + "eslint-plugin/prefer-message-ids": "error", "eslint-plugin/prefer-output-null": "error", "eslint-plugin/prefer-placeholders": "error", "eslint-plugin/report-message-format": ["error", "[^a-z].*\\.$"], @@ -80,8 +81,7 @@ module.exports = { files: ["lib/rules/*", "tools/internal-rules/*"], excludedFiles: ["index.js"], rules: { - "internal-rules/no-invalid-meta": "error", - "internal-rules/consistent-meta-messages": "error" + "internal-rules/no-invalid-meta": "error" } }, { diff --git a/package.json b/package.json index ea08a90ef65..5fa5678bd6c 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "ejs": "^3.0.2", "eslint": "file:.", "eslint-config-eslint": "file:packages/eslint-config-eslint", - "eslint-plugin-eslint-plugin": "^3.4.0", + "eslint-plugin-eslint-plugin": "^3.5.0", "eslint-plugin-internal-rules": "file:tools/internal-rules", "eslint-plugin-jsdoc": "^25.4.3", "eslint-plugin-node": "^11.1.0", diff --git a/tests/tools/internal-rules/consistent-meta-messages.js b/tests/tools/internal-rules/consistent-meta-messages.js deleted file mode 100644 index 4df8be92af2..00000000000 --- a/tests/tools/internal-rules/consistent-meta-messages.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @fileoverview Tests for consistent-meta-messages rule. - * @author 薛定谔的猫 - */ - -"use strict"; - -//------------------------------------------------------------------------------ -// Requirements -//------------------------------------------------------------------------------ - -const rule = require("../../../tools/internal-rules/consistent-meta-messages"); -const { RuleTester } = require("../../../lib/rule-tester"); - -//------------------------------------------------------------------------------ -// Tests -//------------------------------------------------------------------------------ - -const ruleTester = new RuleTester(); - -ruleTester.run("consistent-meta-messages", rule, { - valid: [ - `module.exports = { - meta: { - messages: {unexpected: "an error occurs."} - } - };` - ], - invalid: [ - { - code: ` - module.exports = { - meta: {} - };`, - errors: [{ messageId: "expectedMessages" }] - } - ] -}); diff --git a/tools/internal-rules/consistent-meta-messages.js b/tools/internal-rules/consistent-meta-messages.js deleted file mode 100644 index b094c86e884..00000000000 --- a/tools/internal-rules/consistent-meta-messages.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @fileoverview A rule to enforce using `meta.messages` property in core rules - * @author 薛定谔的猫 - */ - -"use strict"; - -//------------------------------------------------------------------------------ -// Helpers -//------------------------------------------------------------------------------ - -/** - * Gets the property of the Object node passed in that has the name specified. - * @param {string} property Name of the property to return. - * @param {ASTNode} node The ObjectExpression node. - * @returns {ASTNode} The Property node or null if not found. - */ -function getPropertyFromObject(property, node) { - const properties = node.properties; - - for (let i = 0; i < properties.length; i++) { - if (properties[i].key.name === property) { - return properties[i]; - } - } - - return null; -} - -/** - * Verifies that the meta.messages property is present. - * TODO: check it has the correct value - * @param {RuleContext} context The ESLint rule context. - * @param {ASTNode} exportsNode ObjectExpression node that the rule exports. - * @returns {void} - */ -function checkMetaMessages(context, exportsNode) { - if (exportsNode.type !== "ObjectExpression") { - - // if the exported node is not the correct format, "internal-no-invalid-meta" will already report this. - return; - } - - const metaProperty = getPropertyFromObject("meta", exportsNode); - const messages = metaProperty && getPropertyFromObject("messages", metaProperty.value); - - if (!messages) { - context.report({ - node: metaProperty, - messageId: "expectedMessages" - }); - } -} - -//------------------------------------------------------------------------------ -// Rule Definition -//------------------------------------------------------------------------------ - -module.exports = { - meta: { - docs: { - description: "enforce using `meta.messages` property in core rules", - category: "Internal", - recommended: false - }, - schema: [], - type: "suggestion", - messages: { - expectedMessages: "Expected `meta.messages` property." - } - }, - - create(context) { - return { - "AssignmentExpression[left.object.name='module'][left.property.name='exports']"(node) { - checkMetaMessages(context, node.right); - } - }; - } -}; From 00e0f044d492a08981a0a9bdfdf26d0087e26c10 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Mon, 26 Jul 2021 21:21:19 -0700 Subject: [PATCH 2/5] bump eslint-plugin-eslint-plugin version to 3.5.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5fa5678bd6c..0ef5ee57017 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "ejs": "^3.0.2", "eslint": "file:.", "eslint-config-eslint": "file:packages/eslint-config-eslint", - "eslint-plugin-eslint-plugin": "^3.5.0", + "eslint-plugin-eslint-plugin": "^3.5.1", "eslint-plugin-internal-rules": "file:tools/internal-rules", "eslint-plugin-jsdoc": "^25.4.3", "eslint-plugin-node": "^11.1.0", From 487792d4bba26b5fbff1e0de6ac8234c66864296 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Thu, 29 Jul 2021 14:24:17 -0700 Subject: [PATCH 3/5] fix lint violation --- .eslintrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 6ea50e11291..b405b82fccd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -85,7 +85,7 @@ module.exports = { excludedFiles: ["index.js"], rules: { "eslint-plugin/prefer-object-rule": "error", - "internal-rules/no-invalid-meta": "error", + "internal-rules/no-invalid-meta": "error" } }, { From 85882e98f57ef0fc9c72e029cb53da27e9f6ed07 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Thu, 29 Jul 2021 14:25:43 -0700 Subject: [PATCH 4/5] bump eslint-plugin-eslint-plugin to 3.5.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ef5ee57017..47d2b2429d6 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "ejs": "^3.0.2", "eslint": "file:.", "eslint-config-eslint": "file:packages/eslint-config-eslint", - "eslint-plugin-eslint-plugin": "^3.5.1", + "eslint-plugin-eslint-plugin": "^3.5.2", "eslint-plugin-internal-rules": "file:tools/internal-rules", "eslint-plugin-jsdoc": "^25.4.3", "eslint-plugin-node": "^11.1.0", From f816773b17873db047355592e5f2f4ba755d6a7c Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Fri, 30 Jul 2021 00:28:12 -0700 Subject: [PATCH 5/5] bump eslint-plugin-eslint-plugin to 3.5.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 47d2b2429d6..1731ae6e1b5 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "ejs": "^3.0.2", "eslint": "file:.", "eslint-config-eslint": "file:packages/eslint-config-eslint", - "eslint-plugin-eslint-plugin": "^3.5.2", + "eslint-plugin-eslint-plugin": "^3.5.3", "eslint-plugin-internal-rules": "file:tools/internal-rules", "eslint-plugin-jsdoc": "^25.4.3", "eslint-plugin-node": "^11.1.0",