
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
eslint-plugin-brackets
Advanced tools
ESLint style rules for minimizing diffs with line breaks around brackets
Opinionated ESLint style rules dealing with line breaks after opening brackets and before closing brackets of objects, arrays, conditionals, and functions.
This project is opinionated, meaning there are no options for any of the rules. However, this may change in the future.
The general goal of these rules is to enforce a coding style that minimizes diffs when items are added to lists (be it arrays, objects, parameter lists, etc.)
For example, we want to avoid this:
// Bad
array = ['a',
'b',
'c'];
array2 = ["this is a long string" +
"spanning multiple lines"];
object = { a: 'a',
b: 'b' };
function foo(bar,
baz) {
}
call('a',
'b');
if (test &&
test2 &&
test3) {
}
And instead prefer this:
// Good
array = [
'a',
'b',
'c',
];
array2 = [
"this is a long string" +
"spanning multiple lines"
];
object = {
a: 'a',
b: 'b'
};
function foo(
bar,
baz
) {
}
call(
'a',
'b'
);
if (
test &&
test2 &&
test3
) {
}
Why?
In other words, there shouldn't be items on the same line as the opening bracket or closing bracket enclosing the list if the list spans multiple line.
However, there is an exception to this: if the last token of the line containing the opening bracket is another opening bracket, or if the first token of the line containing the closing bracket is another closing bracket, then that is allowed:
// Fine
array = ['a', function() { // ends with an opening bracket
}];
call('a', {
b: 'c',
});
if (confirm(
'are you sure?'
)) {
}
The exception to that is it's not allowed for objects:
// Bad
obj = { a: 'b', c: {
d: 'e',
} };
Preferring this:
// Good
obj = {
a: 'b',
c: {
d: 'e',
},
};
All rules can be auto-fixed (running eslint with --fix
). The fix will add
appropriate line breaks after the opening bracket and before the closing bracket
at violation sites. This may produce code with bad indentation. We rely on
eslint's indent
rule to fix the indentation in a second pass.
Currently (as of ESLint 3.10) the indent
rule is broken for params inside call
expressions and expressions inside conditionals, but this should be fixed soon.
Take a look at the rule tests to see valid and invalid patterns for each rule.
You'll first need to install ESLint:
$ npm install eslint
Next, install eslint-plugin-brackets
:
$ npm install eslint-plugin-brackets
Note: If you installed ESLint globally (using the -g
flag) then you must
also install eslint-plugin-brackets
globally.
Add brackets
to the plugins section of your .eslintrc
configuration
file. You can omit the eslint-plugin-
prefix:
{
"plugins": [
"brackets"
]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"brackets/array-bracket-newline": 2,
"brackets/object-curly-newline": 2,
}
}
npm install
or yarn
.npm run test:watch
to continually run the testsFAQs
ESLint style rules for minimizing diffs with line breaks around brackets
We found that eslint-plugin-brackets demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers 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.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.