Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 083311e

Browse filesBrowse files
avivkellermarco-ippolito
authored andcommitted
tools: remove redudant code from eslint require rule
PR-URL: #54892 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent 27ff2da commit 083311e
Copy full SHA for 083311e

File tree

Expand file treeCollapse file tree

1 file changed

+22
-35
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+22
-35
lines changed
Open diff view settings
Collapse file
+22-35Lines changed: 22 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/**
22
* @fileoverview Ensure modules are not required twice at top level of a module
33
* @author devsnek
4+
* @author RedYetiDev
45
*/
56
'use strict';
67

@@ -10,58 +11,44 @@ const { isRequireCall, isString } = require('./rules-utils.js');
1011
// Rule Definition
1112
//------------------------------------------------------------------------------
1213

13-
const secondLevelTypes = [
14+
const topLevelTypes = new Set([
1415
'FunctionDeclaration', 'FunctionExpression', 'ArrowFunctionExpression',
1516
'ClassBody', 'MethodDefinition',
16-
];
17+
]);
1718

18-
function isTopLevel(node) {
19-
while (!secondLevelTypes.includes(node.type)) {
19+
const isTopLevel = (node) => {
20+
while (node) {
21+
if (topLevelTypes.has(node.type)) return false;
2022
node = node.parent;
21-
if (!node) {
22-
return true;
23-
}
2423
}
25-
return false;
26-
}
24+
return true;
25+
};
2726

2827
module.exports = {
2928
create(context) {
3029
if (context.parserOptions.sourceType === 'module') {
3130
return {};
3231
}
3332

34-
function getRequiredModuleNameFromCall(node) {
35-
// Node has arguments and first argument is string
36-
if (node.arguments.length && isString(node.arguments[0])) {
37-
return node.arguments[0].value.trim();
38-
}
39-
40-
return undefined;
41-
}
33+
const requiredModules = new Set();
4234

43-
const required = new Set();
44-
45-
const rules = {
46-
CallExpression: (node) => {
35+
return {
36+
CallExpression(node) {
4737
if (isRequireCall(node) && isTopLevel(node)) {
48-
const moduleName = getRequiredModuleNameFromCall(node);
49-
if (moduleName === undefined) {
50-
return;
51-
}
52-
if (required.has(moduleName)) {
53-
context.report(
54-
node,
55-
'\'{{moduleName}}\' require is duplicated.',
56-
{ moduleName },
57-
);
58-
} else {
59-
required.add(moduleName);
38+
const [firstArg] = node.arguments;
39+
if (isString(firstArg)) {
40+
const moduleName = firstArg.value.trim();
41+
if (requiredModules.has(moduleName)) {
42+
context.report({
43+
node,
44+
message: `'${moduleName}' require is duplicated.`,
45+
});
46+
} else {
47+
requiredModules.add(moduleName);
48+
}
6049
}
6150
}
6251
},
6352
};
64-
65-
return rules;
6653
},
6754
};

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.