summaryrefslogtreecommitdiff
path: root/tools/eslint-rules
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-05-13 14:50:55 -0400
committercjihrig <cjihrig@gmail.com>2019-05-15 15:18:03 -0400
commit03d43539f93be2c401f57d7eac87a5ae933ef905 (patch)
tree5746d3f3ffa579bad9080476cb49c19aac33c2b0 /tools/eslint-rules
parent53bef423f31bb383212a6754228c21ca3d3231b6 (diff)
downloadandroid-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.js6
-rw-r--r--tools/eslint-rules/require-common-first.js10
-rw-r--r--tools/eslint-rules/required-modules.js11
-rw-r--r--tools/eslint-rules/rules-utils.js9
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);
};