Socket
Socket
Sign inDemoInstall

@putout/plugin-conditions

Package Overview
Dependencies
387
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @putout/plugin-conditions

🐊Putout plugin adds support of conditions transformations


Version published
Weekly downloads
3.4K
increased by7.58%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

@putout/plugin-conditions NPM version

🐊Putout adds support of conditions transformations.

Install

npm i @putout/plugin-conditions -D

Rules

{
    "rules": {
        "conditions/apply-consistent-blocks": "on",
        "conditions/apply-comparison-order": "on",
        "conditions/apply-if": "on",
        "conditions/add-return": "on",
        "conditions/convert-comparison-to-boolean": "on",
        "conditions/convert-equal-to-strict-equal": "on",
        "conditions/evaluate": "on",
        "conditions/remove-boolean": "on",
        "conditions/remove-constant": "on",
        "conditions/remove-zero": "on",
        "conditions/remove-useless-else": "on",
        "conditions/remove-same-values-condition": "on",
        "conditions/merge-if-statements": "on"
    }
}

apply-consistent-blocks

A block statement is used to group zero or more statements. The block is delimited by a pair of braces ("curly braces") and contains a list of zero or more statements and declarations.

(c) MDN

Check out in 🐊Putout Editor.

❌ Example of incorrect code

if (a > 3) {
    m();
}

if (a > 3)
    b = 5;
else {
    b = 6;
}

if (a > 3)
    b = 5;
else {
    b = 6;
    fn();
}

✅ Example of correct code

if (a > 3)
    m();

if (a > 3)
    b = 5;
else
    b = 6;

if (a > 3) {
    b = 5;
} else {
    b = 6;
    fn();
}

apply-comparison-order

The result of evaluating an equality operator is always of type boolean based on whether the comparison is true.

(c) MDN

Checkout it 🐊Putout Editor.

❌ Example of incorrect code

3 === a;
3 < b;

✅ Example of correct code

a === 3;
b > 3;

Comparison

LinterRuleFix
🐊 Putoutconditions/apply-comparison-order
ESLintyoda½

apply-if

❌ Example of incorrect code

if (2 > 3)
    ;

alert();

✅ Example of correct code

if (2 > 3)
    alert();

add-return

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

if (a)
    false;

✅ Example of correct code

if (a)
    return false;

convert-comparison-to-boolean

Strict equality compares two values for equality. Neither value is implicitly converted to some other value before being compared. If the values have different types, the values are considered unequal.

(c) MDN

❌ Example of incorrect code

const t = 2 < 3;

✅ Example of correct code

const t = false;

convert-equal-to-strict-equal

The strict equality operator (===) checks whether its two operands are equal, returning a Boolean result. Unlike the equality operator (==), the strict equality operator always considers operands of different types to be different.

(c) MDN

❌ Example of incorrect code

if (a == b) {}

✅ Example of correct code

if (a === b) {}

evaluate

The if statement executes a statement if a specified condition is truthy. If the condition is falsy, another statement can be executed.

(c) MDN

❌ Example of incorrect code

const a = [];
const c = a;

if (a)
    console.log(a);

✅ Example of correct code

const a = [];
const c = a;

console.log(a);

remove-boolean

❌ Example of incorrect code

if (a === true)
    alert();

✅ Example of correct code

if (a)
    alert();

remove-constant

❌ Example of incorrect code

function hi(a) {
    if (2 < 3) {
        console.log('hello');
        console.log('world');
    }
}

✅ Example of correct code

function hi(b) {
    console.log('hello');
    console.log('world');
}

remove-zero

❌ Example of incorrect code

if (b === 0) {}

if (b !== 0) {}

✅ Example of correct code

if (!b) {}

if (b) {}

simplify

❌ Example of incorrect code

if (zone?.tooltipCallback)
    zone.tooltipCallback(e);

if (a)
    alert('hello');
else
    alert('hello');

✅ Example of correct code

zone?.tooltipCallback(e);

alert('hello');

merge-if-statements

The if statement executes a statement if a specified condition is truthy.

(c) MDN

❌ Example of incorrect code

if (a > b)
    if (b < c)
        console.log('hello');

✅ Example of correct code

if (a > b && b < c)
    console.log('hello');

remove-useless-else

You can skip the else block if your if block always executes a return statement, it makes code a lot easier to read.

(c) no else return

Remove useless else before:

  • return;
  • continue;
  • break;

❌ Example of incorrect code

if (x)
    return;
else
    console.log();

✅ Example of correct code

if (x)
    return;

console.log();

remove-same-values-condition"

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

for (const [i, el] of entries(elements)) {
    if (el !== path)
        continue;
    
    if (!Number(i) && n) {
        path.parentPath.node.elements[i] = null;
        break;
    }
    
    if (el === path) {
        remove(path);
        break;
    }
}

✅ Example of correct code

for (const [i, el] of entries(elements)) {
    if (el !== path)
        continue;
    
    if (!Number(i) && n) {
        path.parentPath.node.elements[i] = null;
        break;
    }
    
    remove(path);
}

Comparison

LinterRuleFix
🐊 Putoutconditions/remove-useless-else
ESLintno-else-return

License

MIT

Keywords

FAQs

Last updated on 03 Dec 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc