eslint-plugin-lodash
Version:
Lodash specific linting rules for ESLint
45 lines (33 loc) • 1.5 kB
JavaScript
/**
* @fileoverview Rule to check if a call to map should be a call to invokeMap
*/
;
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
docs: {}
},
create: function create(context) {
var _require = require('../util/lodashUtil');
var getLodashMethodVisitors = _require.getLodashMethodVisitors;
var _require2 = require('../util/astUtil');
var isCallFromObject = _require2.isCallFromObject;
var getValueReturnedInFirstStatement = _require2.getValueReturnedInFirstStatement;
var getFirstParamName = _require2.getFirstParamName;
var _require3 = require('../util/methodDataUtil');
var isAliasOfMethod = _require3.isAliasOfMethod;
function isFunctionMethodCallOfParam(func) {
var firstParamName = getFirstParamName(func);
return firstParamName && isCallFromObject(getValueReturnedInFirstStatement(func), firstParamName);
}
return getLodashMethodVisitors(context, function (node, iteratee, _ref) {
var method = _ref.method;
var version = _ref.version;
if (isAliasOfMethod(version, 'map', method) && isFunctionMethodCallOfParam(iteratee)) {
context.report(node, 'Prefer _.invokeMap over map to a method call.');
}
});
}
};