Skip to content

Commit d2dad0b

Browse files
cjihrigtargos
authored andcommitted
tools: DRY isRequireCall() in lint rules
This commit makes isRequireCall() a reusable utility function for core's custom ESLint rules. PR-URL: #27680 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Yongsheng Zhang <[email protected]>
1 parent eb1f4e5 commit d2dad0b

File tree

4 files changed

+12
-24
lines changed

4 files changed

+12
-24
lines changed

tools/eslint-rules/no-duplicate-requires.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
'use strict';
66

7+
const { isRequireCall } = require('./rules-utils.js');
8+
79
//------------------------------------------------------------------------------
810
// Rule Definition
911
//------------------------------------------------------------------------------
@@ -13,10 +15,6 @@ function isString(node) {
1315
return node && node.type === 'Literal' && typeof node.value === 'string';
1416
}
1517

16-
function isRequireCall(node) {
17-
return node.callee.type === 'Identifier' && node.callee.name === 'require';
18-
}
19-
2018
function isTopLevel(node) {
2119
do {
2220
if (node.type === 'FunctionDeclaration' ||

tools/eslint-rules/require-common-first.js

+1-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
'use strict';
55

66
const path = require('path');
7+
const { isRequireCall } = require('./rules-utils.js');
78

89
//------------------------------------------------------------------------------
910
// Rule Definition
@@ -23,15 +24,6 @@ module.exports = function(context) {
2324
return node && node.type === 'Literal' && typeof node.value === 'string';
2425
}
2526

26-
/**
27-
* Function to check if a node is a require call.
28-
* @param {ASTNode} node The node to check.
29-
* @returns {boolean} If the node is a require call.
30-
*/
31-
function isRequireCall(node) {
32-
return node.callee.type === 'Identifier' && node.callee.name === 'require';
33-
}
34-
3527
/**
3628
* Function to check if the path is a module and return its name.
3729
* @param {String} str The path to check

tools/eslint-rules/required-modules.js

+2-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
'use strict';
66

7+
const { isRequireCall } = require('./rules-utils.js');
8+
79
//------------------------------------------------------------------------------
810
// Rule Definition
911
//------------------------------------------------------------------------------
@@ -32,15 +34,6 @@ module.exports = function(context) {
3234
return node && node.type === 'Literal' && typeof node.value === 'string';
3335
}
3436

35-
/**
36-
* Function to check if a node is a require call.
37-
* @param {ASTNode} node The node to check.
38-
* @returns {boolean} If the node is a require call.
39-
*/
40-
function isRequireCall(node) {
41-
return node.callee.type === 'Identifier' && node.callee.name === 'require';
42-
}
43-
4437
/**
4538
* Function to check if the path is a required module and return its name.
4639
* @param {String} str The path to check

tools/eslint-rules/rules-utils.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
*/
44
'use strict';
55

6+
function isRequireCall(node) {
7+
return node.callee.type === 'Identifier' && node.callee.name === 'require';
8+
}
9+
module.exports.isRequireCall = isRequireCall;
10+
611
module.exports.isDefiningError = function(node) {
712
return node.expression &&
813
node.expression.type === 'CallExpression' &&
@@ -16,7 +21,7 @@ module.exports.isDefiningError = function(node) {
1621
* require calls.
1722
*/
1823
module.exports.isRequired = function(node, modules) {
19-
return node.callee.name === 'require' && node.arguments.length !== 0 &&
24+
return isRequireCall(node) && node.arguments.length !== 0 &&
2025
modules.includes(node.arguments[0].value);
2126
};
2227

@@ -26,7 +31,7 @@ module.exports.isRequired = function(node, modules) {
2631
*/
2732
const commonModuleRegExp = new RegExp(/^(\.\.\/)*common(\.js)?$/);
2833
module.exports.isCommonModule = function(node) {
29-
return node.callee.name === 'require' &&
34+
return isRequireCall(node) &&
3035
node.arguments.length !== 0 &&
3136
commonModuleRegExp.test(node.arguments[0].value);
3237
};

0 commit comments

Comments
 (0)