UNPKG

eslint-plugin-lodash

Version:

Lodash specific linting rules for ESLint

51 lines (40 loc) 1.65 kB
/** * @fileoverview Rule to check if the expression could be better expressed as a chain */ 'use strict'; /** * @fileoverview Rule to check if the expression could be better expressed as a chain */ //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ module.exports = { meta: { schema: [{ type: 'integer', minimum: 2 }] }, create: function create(context) { var _require = require('../util/lodashUtil'); var isLodashCall = _require.isLodashCall; var getLodashImportVisitors = _require.getLodashImportVisitors; var _require2 = require('../util/astUtil'); var getCaller = _require2.getCaller; var _require3 = require('../util/ruleUtil'); var combineVisitorObjects = _require3.combineVisitorObjects; var DEFAULT_LENGTH = 3; var settings = require('../util/settingsUtil').getSettings(context); var ruleDepth = parseInt(context.options[0], 10) || DEFAULT_LENGTH; function isNestedNLevels(node, n) { return n === 0 || isLodashCall(node, settings.pragma, context) && isNestedNLevels(node.arguments[0], n - 1); } return combineVisitorObjects({ CallExpression: function CallExpression(node) { if (isNestedNLevels(node, ruleDepth)) { context.report(getCaller(node.arguments[0]), 'Prefer chaining to composition'); } } }, getLodashImportVisitors(context)); } };