diff options
author | cjihrig <cjihrig@gmail.com> | 2019-05-13 14:50:55 -0400 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2019-05-15 15:18:03 -0400 |
commit | 03d43539f93be2c401f57d7eac87a5ae933ef905 (patch) | |
tree | 5746d3f3ffa579bad9080476cb49c19aac33c2b0 /tools/eslint-rules | |
parent | 53bef423f31bb383212a6754228c21ca3d3231b6 (diff) | |
download | android-node-v8-03d43539f93be2c401f57d7eac87a5ae933ef905.tar.gz android-node-v8-03d43539f93be2c401f57d7eac87a5ae933ef905.tar.bz2 android-node-v8-03d43539f93be2c401f57d7eac87a5ae933ef905.zip |
tools: DRY isRequireCall() in lint rules
This commit makes isRequireCall() a reusable utility
function for core's custom ESLint rules.
PR-URL: https://github.com/nodejs/node/pull/27680
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Diffstat (limited to 'tools/eslint-rules')
-rw-r--r-- | tools/eslint-rules/no-duplicate-requires.js | 6 | ||||
-rw-r--r-- | tools/eslint-rules/require-common-first.js | 10 | ||||
-rw-r--r-- | tools/eslint-rules/required-modules.js | 11 | ||||
-rw-r--r-- | tools/eslint-rules/rules-utils.js | 9 |
4 files changed, 12 insertions, 24 deletions
diff --git a/tools/eslint-rules/no-duplicate-requires.js b/tools/eslint-rules/no-duplicate-requires.js index c0d036fab9..05a379eba6 100644 --- a/tools/eslint-rules/no-duplicate-requires.js +++ b/tools/eslint-rules/no-duplicate-requires.js @@ -4,6 +4,8 @@ */ 'use strict'; +const { isRequireCall } = require('./rules-utils.js'); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -13,10 +15,6 @@ function isString(node) { return node && node.type === 'Literal' && typeof node.value === 'string'; } -function isRequireCall(node) { - return node.callee.type === 'Identifier' && node.callee.name === 'require'; -} - function isTopLevel(node) { do { if (node.type === 'FunctionDeclaration' || diff --git a/tools/eslint-rules/require-common-first.js b/tools/eslint-rules/require-common-first.js index 24e8dbff1a..2b04a98d9f 100644 --- a/tools/eslint-rules/require-common-first.js +++ b/tools/eslint-rules/require-common-first.js @@ -4,6 +4,7 @@ 'use strict'; const path = require('path'); +const { isRequireCall } = require('./rules-utils.js'); //------------------------------------------------------------------------------ // Rule Definition @@ -24,15 +25,6 @@ module.exports = function(context) { } /** - * Function to check if a node is a require call. - * @param {ASTNode} node The node to check. - * @returns {boolean} If the node is a require call. - */ - function isRequireCall(node) { - return node.callee.type === 'Identifier' && node.callee.name === 'require'; - } - - /** * Function to check if the path is a module and return its name. * @param {String} str The path to check * @returns {String} module name diff --git a/tools/eslint-rules/required-modules.js b/tools/eslint-rules/required-modules.js index 9b895c9003..40cb8e46e5 100644 --- a/tools/eslint-rules/required-modules.js +++ b/tools/eslint-rules/required-modules.js @@ -4,6 +4,8 @@ */ 'use strict'; +const { isRequireCall } = require('./rules-utils.js'); + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -33,15 +35,6 @@ module.exports = function(context) { } /** - * Function to check if a node is a require call. - * @param {ASTNode} node The node to check. - * @returns {boolean} If the node is a require call. - */ - function isRequireCall(node) { - return node.callee.type === 'Identifier' && node.callee.name === 'require'; - } - - /** * Function to check if the path is a required module and return its name. * @param {String} str The path to check * @returns {undefined|String} required module name or undefined diff --git a/tools/eslint-rules/rules-utils.js b/tools/eslint-rules/rules-utils.js index b85425cb50..713a49bf7a 100644 --- a/tools/eslint-rules/rules-utils.js +++ b/tools/eslint-rules/rules-utils.js @@ -3,6 +3,11 @@ */ 'use strict'; +function isRequireCall(node) { + return node.callee.type === 'Identifier' && node.callee.name === 'require'; +} +module.exports.isRequireCall = isRequireCall; + module.exports.isDefiningError = function(node) { return node.expression && node.expression.type === 'CallExpression' && @@ -16,7 +21,7 @@ module.exports.isDefiningError = function(node) { * require calls. */ module.exports.isRequired = function(node, modules) { - return node.callee.name === 'require' && node.arguments.length !== 0 && + return isRequireCall(node) && node.arguments.length !== 0 && modules.includes(node.arguments[0].value); }; @@ -26,7 +31,7 @@ module.exports.isRequired = function(node, modules) { */ const commonModuleRegExp = new RegExp(/^(\.\.\/)*common(\.js)?$/); module.exports.isCommonModule = function(node) { - return node.callee.name === 'require' && + return isRequireCall(node) && node.arguments.length !== 0 && commonModuleRegExp.test(node.arguments[0].value); }; |