mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
/**
|
|
* Utility functions common to ESLint rules.
|
|
*/
|
|
'use strict';
|
|
|
|
/**
|
|
* Returns true if any of the passed in modules are used in
|
|
* require calls.
|
|
*/
|
|
module.exports.isRequired = function(node, modules) {
|
|
return node.callee.name === 'require' &&
|
|
modules.includes(node.arguments[0].value);
|
|
};
|
|
|
|
/**
|
|
* Returns true is the node accesses any property in the properties
|
|
* array on the 'common' object.
|
|
*/
|
|
module.exports.usesCommonProperty = function(node, properties) {
|
|
if (node.name) {
|
|
return properties.includes(node.name);
|
|
}
|
|
if (node.property) {
|
|
return properties.includes(node.property.name);
|
|
}
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* Returns true if the passed in node is inside an if statement block,
|
|
* and the block also has a call to skip.
|
|
*/
|
|
module.exports.inSkipBlock = function(node) {
|
|
var hasSkipBlock = false;
|
|
if (node.test &&
|
|
node.test.type === 'UnaryExpression' &&
|
|
node.test.operator === '!') {
|
|
const consequent = node.consequent;
|
|
if (consequent.body) {
|
|
consequent.body.some(function(expressionStatement) {
|
|
if (hasSkip(expressionStatement.expression)) {
|
|
return hasSkipBlock = true;
|
|
}
|
|
return false;
|
|
});
|
|
} else {
|
|
if (hasSkip(consequent.expression)) {
|
|
hasSkipBlock = true;
|
|
}
|
|
}
|
|
}
|
|
return hasSkipBlock;
|
|
};
|
|
|
|
function hasSkip(expression) {
|
|
return expression &&
|
|
expression.callee &&
|
|
(expression.callee.name === 'skip' ||
|
|
expression.callee.property &&
|
|
expression.callee.property.name === 'skip');
|
|
}
|
|
|