eslint-plugin-lodash
Version:
Lodash specific linting rules for ESLint
53 lines (38 loc) • 1.58 kB
JavaScript
/**
* @fileoverview Rule to enforce a consistent composition method
*/
'use strict';
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
var possibleDirections = ['pipe', 'compose', 'flow', 'flowRight'];
module.exports = {
meta: {
schema: [{
enum: possibleDirections
}]
},
create: function create(context) {
var includes = require('lodash/includes');
var _require = require('../util/lodashUtil');
var getLodashMethodVisitors = _require.getLodashMethodVisitors;
var _require$getSettings = require('../util/settingsUtil').getSettings(context);
var version = _require$getSettings.version;
var _require2 = require('../util/methodDataUtil');
var getMainAlias = _require2.getMainAlias;
var direction = context.options[0] || 'flow';
var mainDirectionMethod = getMainAlias(version, direction);
function isOtherDirection(method) {
if (includes(possibleDirections, method)) {
var methodDirection = getMainAlias(version, method);
return methodDirection !== mainDirectionMethod;
}
}
return getLodashMethodVisitors(context, function (node, iteratee, _ref) {
var method = _ref.method;
if (isOtherDirection(method)) {
context.report(node, 'Use _.' + direction + ' for composition');
}
});
}
};