
Product
A Fresh Look for the Socket Dashboard
Weβve redesigned the Socket dashboard with simpler navigation, less visual clutter, and a cleaner UI that highlights what really matters.
@putout/plugin-conditions
Advanced tools
πPutout plugin adds support of conditions transformations
πPutout adds support of conditions transformations.
npm i @putout/plugin-conditions -D
{
"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"
}
}
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:
if (a > 3) {
m();
}
if (a > 3)
b = 5;
else {
b = 6;
}
if (a > 3)
b = 5;
else {
b = 6;
fn();
}
if (a > 3)
m();
if (a > 3)
b = 5;
else
b = 6;
if (a > 3) {
b = 5;
} else {
b = 6;
fn();
}
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.
3 === a;
3 < b;
a === 3;
b > 3;
Linter | Rule | Fix |
---|---|---|
π Putout | conditions/apply-comparison-order | β |
β£ ESLint | yoda | Β½ |
if (2 > 3)
;
alert();
if (2 > 3)
alert();
Checkout in πPutout Editor.
if (a)
false;
if (a)
return false;
Checkout in πPutout Editor.
if ((a) => b) {}
if (a <= b) {}
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
const t = 2 < 3;
const t = false;
The strict equality operator (
===
) checks whether its two operands are equal, returning aBoolean
result. Unlike the equality operator (==
), the strict equality operator always considers operands of different types to be different.(c) MDN
if (a == b) {}
if (a === b) {}
The if statement executes a statement if a specified condition is truthy. If the condition is falsy, another statement can be executed.
(c) MDN
const a = [];
const c = a;
if (a)
console.log(a);
const a = [];
const c = a;
console.log(a);
Checkout in πPutout Editor.
const check = (references) => !(references > 3);
return !(nextNode.type !== 'text' || nextNode.value !== ' ');
const check = (references) => references <= 3;
return nextNode.type === 'text' && nextNode.value === ' ';
if (a === true)
alert();
if (a)
alert();
function hi(a) {
if (2 < 3) {
console.log('hello');
console.log('world');
}
}
function hi(b) {
console.log('hello');
console.log('world');
}
if (b === 0) {}
if (b !== 0) {}
if (!b) {}
if (b) {}
if (zone?.tooltipCallback)
zone.tooltipCallback(e);
if (a)
alert('hello');
else
alert('hello');
zone?.tooltipCallback(e);
alert('hello');
Multiple
if...else
statements can be nested to create an else if clause(c) MDN
if (a > b)
if (b < c)
console.log('hello');
if (a > b && b < c)
console.log('hello');
The
if
statement executes a statementif
a specified condition is truthy.(c) MDN
Checkout in Putout Editor.
if (!matchFn)
fix(from, to, path);
else if (matchFn(options))
fix(from, to, path);
if (!matchFn || matchFn(options))
fix(from, to, path);
You can skip the
else
block if yourif
block always executes areturn
statement, it makes code a lot easier to read.(c) no else return
Remove useless else
before:
return
;continue
;break
;if (x)
return;
else
console.log();
if (x)
return;
console.log();
Linter | Rule | Fix |
---|---|---|
π Putout | conditions/remove-useless-else | β |
β£ ESLint | no-else-return | β |
Checkout in πPutout Editor.
while (currentDirPath = getParentDirectory(currentDirPath)) {
if (!currentDirPath)
break;
}
while (currentDirPath = getParentDirectory(currentDirPath)) {}
Checkout in πPutout Editor.
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;
}
}
for (const [i, el] of entries(elements)) {
if (el !== path)
continue;
if (!Number(i) && n) {
path.parentPath.node.elements[i] = null;
break;
}
remove(path);
}
If you use a declaration instead of a statement, it would be a
SyntaxError
. For example, alet
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.
const a = 5;
if (a) {}
if (a) {
const a = 5;
}
MIT
FAQs
πPutout plugin adds support of conditions transformations
The npm package @putout/plugin-conditions receives a total of 4,224 weekly downloads. As such, @putout/plugin-conditions popularity was classified as popular.
We found that @putout/plugin-conditions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 1 open source maintainer collaborating on the project.
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.
Product
Weβve redesigned the Socket dashboard with simpler navigation, less visual clutter, and a cleaner UI that highlights what really matters.
Industry Insights
Terry OβDaniel, Head of Security at Amplitude, shares insights on building high-impact security teams, aligning with engineering, and why AI gives defenders a fighting chance.
Security News
MCP spec updated with structured tool output, stronger OAuth 2.1 security, resource indicators, and protocol cleanups for safer, more reliable AI workflows.