@putout/plugin-logical-expressions
🐊Putout plugin adds ability to transform logical expressions
Last updated 10 months ago by coderaiser .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @putout/plugin-logical-expressions 
SYNC missed versions from official npm registry.

@putout/plugin-logical-expressions NPM version

The logical NOT (!) operator takes truth to falsity and vice versa.

(c) MDN

????Putout plugin adds ability to simplify logical expressions containing comparisons which will always evaluate to true or false since it's likely indications of programmer error.

Complements @putout/plugin-apply-comparison-order.

Install

npm i @putout/plugin-logical-expressions -D

Rules

Config

{
    "rules": {
        "logical-expressions/simplify": "on",
        "logical-expressions/remove-boolean": "on",
        "logical-expressions/remove-duplicates": "on",
        "logical-expressions/convert-bitwise-to-logical": "on"
    }
}

simplify

❌ Example of incorrect code

const is = !(options && !options.bidirectional);

if (!left.type === 'UnaryExpression') {}

const oneOf = a || a;
const same = a === a;

a() && b;

βœ… Example of correct code

const is = !options || options.bidirectional;

if (left.type !== 'UnaryExpression') {}

const oneOf = a;
const same = true;

a();

The rule also simplify duplication use:

-if (a && b || a && c) {
+if (a && (b || c)) {
}

Wrong cases with instanceof:

-!a instanceof b;
-a instanceof !b;
-!a instanceof !b;
+!(a instanceof b);

Wrong cases with in:

-!a in b;
-a in !b;
+!(a in b);

In case of duplicates:

-a && b && a
+a && b

remove-boolean

A boolean is a logical data type that can have only the values true or false.

(c) MDN

❌ Example of incorrect code

const t = true && false;

βœ… Example of correct code

const t = false;

remove-duplicates

❌ Example of incorrect code

const t = a && b && a;

βœ… Example of correct code

const t = a && b;

convert-bitwise-to-logical

The bitwise OR operator (|) returns a 1 in each bit position for which the corresponding bits of either or both operands are 1s.

The operands are converted to 32-bit integers and expressed by a series of bits (zeroes and ones).

(c) MDN

Convert bitwise to logical operator, when one of operands is not a number, since mostly likely it is an error.

❌ Example of incorrect code

a | !b;

if (!(a !== b))
    fn();

βœ… Example of correct code

a || !b;

if (a === b)
    fn();

Comparison

Linter Rule Fix
???? Putout logical-expressions βœ…
⏣ ESLint no-constant-binary-expression ❌

License

MIT

Current Tags

  • 8.1.0                                ...           latest (5 months ago)

17 Versions

  • 8.1.0                                ...           5 months ago
  • 8.0.0                                ...           10 months ago
  • 7.0.1                                ...           a year ago
  • 7.0.0                                ...           a year ago
  • 6.0.0                                ...           2 years ago
  • 5.0.0                                ...           2 years ago
  • 4.0.0                                ...           3 years ago
  • 3.2.0                                ...           3 years ago
  • 3.1.0                                ...           3 years ago
  • 3.0.2                                ...           3 years ago
  • 3.0.0                                ...           3 years ago
  • 2.1.0                                ...           3 years ago
  • 2.0.0                                ...           3 years ago
  • 1.2.1                                ...           3 years ago
  • 1.2.0                                ...           3 years ago
  • 1.1.0                                ...           4 years ago
  • 1.0.0                                ...           4 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 1
Last Month 1
Dependencies (0)
None
Dev Dependencies (8)
Dependents (2)

Copyright 2013 - present © cnpmjs.org | Home |