UNPKG

eslint-plugin-lodash

Version:

Lodash specific linting rules for ESLint

54 lines (41 loc) 1.91 kB
/** * @fileoverview Rule to disallow the use of a chain for a single method */ 'use strict'; /** * @fileoverview Rule to disallow the use of a chain for a single method */ // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ module.exports = { create: function create(context) { var _require = require('../util/lodashUtil'); var isChainBreaker = _require.isChainBreaker; var isLodashChainStart = _require.isLodashChainStart; var getLodashImportVisitors = _require.getLodashImportVisitors; var _require2 = require('../util/astUtil'); var isObjectOfMethodCall = _require2.isObjectOfMethodCall; var isMethodCall = _require2.isMethodCall; var _require$getSettings = require('../util/settingsUtil').getSettings(context); var version = _require$getSettings.version; var pragma = _require$getSettings.pragma; var _require3 = require('../util/ruleUtil'); var combineVisitorObjects = _require3.combineVisitorObjects; var negate = require('lodash/negate'); var isEndOfChain = negate(isObjectOfMethodCall); function isBeforeChainBreaker(node) { return isChainBreaker(node.parent.parent, version); } return combineVisitorObjects({ CallExpression: function CallExpression(node) { if (isLodashChainStart(node, pragma)) { var firstCall = node.parent.parent; if (isMethodCall(firstCall) && (isEndOfChain(firstCall) || isBeforeChainBreaker(firstCall))) { context.report(firstCall, 'Do not use chain syntax for single method'); } } } }, getLodashImportVisitors(context)); } };