eslint-plugin-lodash
Version:
Lodash specific linting rules for ESLint
48 lines (39 loc) • 1.51 kB
JavaScript
/**
* @fileoverview Rule to enforce a consistent composition method
*/
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
const getDocsUrl = require('../util/getDocsUrl')
const possibleDirections = ['pipe', 'compose', 'flow', 'flowRight']
module.exports = {
meta: {
type: 'problem',
docs: {
url: getDocsUrl('consistent-compose')
},
schema: [{
enum: possibleDirections
}]
},
create(context) {
const includes = require('lodash/includes')
const {getLodashMethodVisitors} = require('../util/lodashUtil')
const {version} = require('../util/settingsUtil').getSettings(context)
const {getMainAlias} = require('../util/methodDataUtil')
const direction = context.options[0] || 'flow'
const mainDirectionMethod = getMainAlias(version, direction)
function isOtherDirection(method) {
if (includes(possibleDirections, method)) {
const methodDirection = getMainAlias(version, method)
return methodDirection !== mainDirectionMethod
}
}
return getLodashMethodVisitors(context, (node, iteratee, {method}) => {
if (isOtherDirection(method)) {
context.report({node, message: `Use _.${direction} for composition`})
}
})
}
}