Skip to content

Latest commit

 

History

History
66 lines (49 loc) · 1.9 KB

chaining.md

File metadata and controls

66 lines (49 loc) · 1.9 KB

Chaining

Lodash allows using its methods in two ways: either importing the entirety of the Lodash library, or importing single methods to be used. When importing the entire _ object, Lodash enables a special syntax called chaining to sequence calls to lodash methods, which evaluates them lazily.

Rule Details

This rule allows users to enforce a specific style:

  • always: Always use chaining over a certain length
  • never: Always use composition over a certain length
  • implicit: Only report on composition if it can be replaced with an implict chain.

Options

This rule takes two arguments. The first is the mode: always, never or implicit (default is never).

never

When the rule is set to never, any use of _() or _.chain() is prohibited.

The following patterns are considered warnings for the never option:

var visibleIds = _(users)
    .filter('visible')
    .map('id')
    .value();
    
var x = _.chain(obj)
  .get(prop)
  .map(f)
  .value();

The following patterns are not considered warnings for the never option:

    var visibleIds = _.map(_.filter(users, 'visible'), 'id');
    import map from "lodash/map"
    import filter from "lodash/filter"
    var visibleIds = map(filter(users, 'visible'), 'id');

always

When the rule is set to always, the rule takes a second argument, depth (default is 3). The rule reports on any nesting of Lodash functions over the specified depth, and on any attempt to chain a single method:

The following patterns are considered warnings, when depth is 2:

var visibleIds = _.map(_.filter(users, 'visible'), 'id');


var ids = _(users).map('id').value()

The following patterns are not considered warnings:

var visibleIds = _(users)
    .filter('visible')
    .map('id')
    .value();
    
var visibleIds = _.map(_.filter(users, 'visible'), 'id'); //when rule options are [2, 'always', 3]