UNPKG

canonical

Version:

Canonical code style linter and formatter for JavaScript, SCSS, CSS and JSON.

34 lines (29 loc) 1.34 kB
/** * @fileoverview Rule to make sure lodash method calls don't use superfluous arguments */ 'use strict'; //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ module.exports = function (context) { var settings = require('../util/settingsUtil').getSettings(context); var lodashUtil = require('../util/lodashUtil'); var astUtil = require('../util/astUtil'); var methodDataUtil = require('../util/methodDataUtil'); function getExpectedArity(node) { var maxArity = methodDataUtil.getFunctionMaxArity(settings.version, astUtil.getMethodName(node)); return Math.max(lodashUtil.isLodashCall(node, settings.pragma) ? maxArity : maxArity - 1, 0); } return { CallExpression: lodashUtil.getLodashMethodVisitor(settings, function (node) { var expectedArity = getExpectedArity(node); if (node.arguments.length > expectedArity) { context.report({ node: node, message: 'Too many arguments passed to `{{method}}` (expected {{expectedArity}}).', data: {method: astUtil.getMethodName(node), expectedArity: expectedArity} }); } }) }; };