]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/lib/rules/global-require.js
deae9d2676f329aedc16333eb6435365f2fd5bb4
2 * @fileoverview Rule for disallowing require() outside of the top-level module context
3 * @author Jamund Ferguson
4 * @deprecated in ESLint v7.0.0
9 const ACCEPTABLE_PARENTS
= new Set([
10 "AssignmentExpression",
13 "ExpressionStatement",
15 "ConditionalExpression",
17 "VariableDeclaration",
22 * Finds the eslint-scope reference in the given scope.
23 * @param {Object} scope The scope to search.
24 * @param {ASTNode} node The identifier node.
25 * @returns {Reference|null} Returns the found reference or null if none were found.
27 function findReference(scope
, node
) {
28 const references
= scope
.references
.filter(reference
=> reference
.identifier
.range
[0] === node
.range
[0] &&
29 reference
.identifier
.range
[1] === node
.range
[1]);
31 if (references
.length
=== 1) {
41 * Checks if the given identifier node is shadowed in the given scope.
42 * @param {Object} scope The current scope.
43 * @param {ASTNode} node The identifier node to check.
44 * @returns {boolean} Whether or not the name is shadowed.
46 function isShadowed(scope
, node
) {
47 const reference
= findReference(scope
, node
);
49 return reference
&& reference
.resolved
&& reference
.resolved
.defs
.length
> 0;
52 /** @type {import('../shared/types').Rule} */
62 description
: "Require `require()` calls to be placed at top-level module scope",
64 url
: "https://eslint.org/docs/latest/rules/global-require"
69 unexpected
: "Unexpected require()."
74 const sourceCode
= context
.sourceCode
;
77 CallExpression(node
) {
78 const currentScope
= sourceCode
.getScope(node
);
80 if (node
.callee
.name
=== "require" && !isShadowed(currentScope
, node
.callee
)) {
81 const isGoodRequire
= sourceCode
.getAncestors(node
).every(parent
=> ACCEPTABLE_PARENTS
.has(parent
.type
));
84 context
.report({ node
, messageId
: "unexpected" });