UNPKG

eslint-plugin-lodash

Version:

Lodash specific linting rules for ESLint

45 lines (33 loc) 1.5 kB
/** * @fileoverview Rule to check if a call to map should be a call to invokeMap */ 'use strict'; //------------------------------------------------------------------------------ // 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.'); } }); } };