πŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more β†’
Socket
Book a DemoInstallSign in
Socket

@putout/plugin-conditions

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@putout/plugin-conditions

🐊Putout plugin adds support of conditions transformations

8.1.0
latest
Source
npm
Version published
Weekly downloads
4.4K
-0.02%
Maintainers
1
Weekly downloads
Β 
Created
Source

@putout/plugin-conditions NPM version

🐊Putout adds support of conditions transformations.

Install

npm i @putout/plugin-conditions -D

Rules

Config

{
    "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/convert-arrow-to-condition": "on",
        "conditions/evaluate": "on",
        "conditions/reverse": "on",
        "conditions/remove-boolean": "on",
        "conditions/remove-constant": "on",
        "conditions/remove-zero": "on",
        "conditions/remove-useless-else": "on",
        "conditions/remove-useless-loop-condition": "on",
        "conditions/remove-same-values-condition": "on",
        "conditions/merge-if-statements": "on",
        "conditions/merge-if-with-else": "on",
        "conditions/simplify": "on",
        "conditions/wrap-with-block": "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-arrow-to-condition

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

if ((a) => b) {}

βœ… Example of correct code

if (a <= b) {}

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);

reverse

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

const check = (references) => !(references > 3);

return !(nextNode.type !== 'text' || nextNode.value !== ' ');

βœ… Example of correct code

const check = (references) => references <= 3;

return nextNode.type === 'text' && nextNode.value === ' ';

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

Multiple if...else statements can be nested to create an else if clause

(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');

merge-if-with-else

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

(c) MDN

Checkout in Putout Editor.

❌ Example of incorrect code

if (!matchFn)
    fix(from, to, path);
else if (matchFn(options))
    fix(from, to, path);

βœ… Example of correct code

if (!matchFn || matchFn(options))
    fix(from, to, path);

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();

Comparison

LinterRuleFix
🐊 Putoutconditions/remove-useless-elseβœ…
⏣ ESLintno-else-returnβœ…

remove-useless-loop-condition

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

while (currentDirPath = getParentDirectory(currentDirPath)) {
    if (!currentDirPath)
        break;
}

βœ… Example of correct code

while (currentDirPath = getParentDirectory(currentDirPath)) {}

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);
}

wrap-with-block

If you use a declaration instead of a statement, it would be a SyntaxError. For example, a let declaration is not a statement, so you can't use it in its bare form as the body of an if statement.

(c) MDN

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

const a = 5;

if (a) {}

βœ… Example of correct code

if (a) {
    const a = 5;
}

License

MIT

Keywords

putout-plugin

FAQs

Package last updated on 11 Jun 2025

Did you know?

Socket

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