Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
eslint-config-plus
Advanced tools
Eslint config plus = Eslint official recommended rules + most fixable and normal rules.
https://eslint.org/docs/rules/
npm install eslint-config-plus -D
// eslint.config.js
const plus = require('eslint-config-plus');
module.exports = [
{
rules: {
... plus.rules
}
}
];
Base on eslint@9.4.0 (2024/6/10)
Rules | Count | ||
---|---|---|---|
All Eslint rules | 290 | ||
✔️ | Defined in plus | 204 | 70.3% |
❌ | Undefined | 86 | 29.7% |
✅ | Recommended | 61 | 21.0% |
🔧 | Fixable | 105 | 36.2% |
⚠️ | Deprecated | 93 | 32.1% |
Rules | Type | Enabled | Value | |
---|---|---|---|---|
1 | accessor-pairs | ❌ | ||
2 | array-bracket-newline | 🔧⚠️ | ✔️ | ["error","consistent"] |
3 | array-bracket-spacing | 🔧⚠️ | ✔️ | ["error","never"] |
4 | array-callback-return | ❌ | ||
5 | array-element-newline | 🔧⚠️ | ✔️ | ["error","consistent"] |
6 | arrow-body-style | 🔧 | ❌ | |
7 | arrow-parens | 🔧⚠️ | ✔️ | ["error","always"] |
8 | arrow-spacing | 🔧⚠️ | ✔️ | "error" |
9 | block-scoped-var | ❌ | ||
10 | block-spacing | 🔧⚠️ | ✔️ | "error" |
11 | brace-style | 🔧⚠️ | ✔️ | "error" |
12 | callback-return | ⚠️ | ❌ | |
13 | camelcase | ❌ | ||
14 | capitalized-comments | 🔧 | ❌ | |
15 | class-methods-use-this | ❌ | ||
16 | comma-dangle | 🔧⚠️ | ✔️ | ["error","never"] |
17 | comma-spacing | 🔧⚠️ | ✔️ | Details["error",{"after":true,"before":false}] |
18 | comma-style | 🔧⚠️ | ✔️ | ["error","last"] |
19 | complexity | ✔️ | ["error",8] | |
20 | computed-property-spacing | 🔧⚠️ | ✔️ | ["error","never"] |
21 | consistent-return | ❌ | ||
22 | consistent-this | ❌ | ||
23 | constructor-super | ✅ | ✔️ | "error" |
24 | curly | 🔧 | ✔️ | "error" |
25 | default-case | ✔️ | "error" | |
26 | default-case-last | ✔️ | "error" | |
27 | default-param-last | ✔️ | "error" | |
28 | dot-location | 🔧⚠️ | ✔️ | ["error","property"] |
29 | dot-notation | 🔧 | ✔️ | "error" |
30 | eol-last | 🔧⚠️ | ✔️ | ["error","always"] |
31 | eqeqeq | 🔧 | ✔️ | ["error","always"] |
32 | for-direction | ✅ | ✔️ | "error" |
33 | func-call-spacing | 🔧⚠️ | ✔️ | ["error","never"] |
34 | func-name-matching | ✔️ | "error" | |
35 | func-names | ❌ | ||
36 | func-style | ❌ | ||
37 | function-call-argument-newline | 🔧⚠️ | ✔️ | ["error","consistent"] |
38 | function-paren-newline | 🔧⚠️ | ✔️ | ["error","consistent"] |
39 | generator-star-spacing | 🔧⚠️ | ✔️ | Details["error",{"after":false,"before":true}] |
40 | getter-return | ✅ | ✔️ | "error" |
41 | global-require | ⚠️ | ❌ | |
42 | grouped-accessor-pairs | ❌ | ||
43 | guard-for-in | ❌ | ||
44 | handle-callback-err | ⚠️ | ❌ | |
45 | id-blacklist | ⚠️ | ❌ | |
46 | id-denylist | ❌ | ||
47 | id-length | ❌ | ||
48 | id-match | ❌ | ||
49 | implicit-arrow-linebreak | 🔧⚠️ | ✔️ | ["error","beside"] |
50 | indent | 🔧⚠️ | ✔️ | Details["error",4,{"ArrayExpression":"first","ObjectExpression":1,"SwitchCase":1}] |
51 | indent-legacy | 🔧⚠️ | ❌ | |
52 | init-declarations | ❌ | ||
53 | jsx-quotes | 🔧⚠️ | ✔️ | ["error","prefer-double"] |
54 | key-spacing | 🔧⚠️ | ✔️ | Details["error",{"afterColon":true,"mode":"strict"}] |
55 | keyword-spacing | 🔧⚠️ | ✔️ | Details["error",{"after":true,"before":true}] |
56 | line-comment-position | ⚠️ | ✔️ | ["error",{"position":"above"}] |
57 | linebreak-style | 🔧⚠️ | ❌ | |
58 | lines-around-comment | 🔧⚠️ | ✔️ | Details["error",{"beforeBlockComment":true}] |
59 | lines-around-directive | 🔧⚠️ | ❌ | |
60 | lines-between-class-members | 🔧⚠️ | ✔️ | Details["error","always",{"exceptAfterSingleLine":true}] |
61 | logical-assignment-operators | 🔧 | ❌ | |
62 | max-classes-per-file | ✔️ | "error" | |
63 | max-depth | ✔️ | ["error",5] | |
64 | max-len | ⚠️ | ✔️ | Details["error",{"code":550,"ignoreStrings":true,"ignoreTrailingComments":true}] |
65 | max-lines | ✔️ | ["error",3000] | |
66 | max-lines-per-function | ✔️ | ["error",300] | |
67 | max-nested-callbacks | ✔️ | ["error",5] | |
68 | max-params | ✔️ | ["error",8] | |
69 | max-statements | ✔️ | ["error",50] | |
70 | max-statements-per-line | ⚠️ | ✔️ | ["error",{"max":3}] |
71 | multiline-comment-style | 🔧⚠️ | ❌ | |
72 | multiline-ternary | 🔧⚠️ | ✔️ | ["error","never"] |
73 | new-cap | ✔️ | Details["error",{"capIsNew":false,"newIsCap":true,"properties":true}] | |
74 | new-parens | 🔧⚠️ | ✔️ | "error" |
75 | newline-after-var | 🔧⚠️ | ❌ | |
76 | newline-before-return | 🔧⚠️ | ❌ | |
77 | newline-per-chained-call | 🔧⚠️ | ❌ | |
78 | no-alert | ✔️ | "error" | |
79 | no-array-constructor | ✔️ | "error" | |
80 | no-async-promise-executor | ✅ | ✔️ | "error" |
81 | no-await-in-loop | ❌ | ||
82 | no-bitwise | ❌ | ||
83 | no-buffer-constructor | ⚠️ | ❌ | |
84 | no-caller | ✔️ | "error" | |
85 | no-case-declarations | ✅ | ✔️ | "error" |
86 | no-catch-shadow | ⚠️ | ❌ | |
87 | no-class-assign | ✅ | ✔️ | "error" |
88 | no-compare-neg-zero | ✅ | ✔️ | "error" |
89 | no-cond-assign | ✅ | ✔️ | "error" |
90 | no-confusing-arrow | 🔧⚠️ | ✔️ | "error" |
91 | no-console | ✔️ | "off" | |
92 | no-const-assign | ✅ | ✔️ | "error" |
93 | no-constant-binary-expression | ✅ | ✔️ | "error" |
94 | no-constant-condition | ✅ | ✔️ | "error" |
95 | no-constructor-return | ✔️ | "error" | |
96 | no-continue | ❌ | ||
97 | no-control-regex | ✅ | ✔️ | "error" |
98 | no-debugger | ✅ | ✔️ | "warn" |
99 | no-delete-var | ✅ | ✔️ | "error" |
100 | no-div-regex | 🔧 | ✔️ | "error" |
101 | no-dupe-args | ✅ | ✔️ | "error" |
102 | no-dupe-class-members | ✅ | ✔️ | "error" |
103 | no-dupe-else-if | ✅ | ✔️ | "error" |
104 | no-dupe-keys | ✅ | ✔️ | "error" |
105 | no-duplicate-case | ✅ | ✔️ | "error" |
106 | no-duplicate-imports | ✔️ | "error" | |
107 | no-else-return | 🔧 | ✔️ | "error" |
108 | no-empty | ✅ | ✔️ | "error" |
109 | no-empty-character-class | ✅ | ✔️ | "error" |
110 | no-empty-function | ❌ | ||
111 | no-empty-pattern | ✅ | ✔️ | "error" |
112 | no-empty-static-block | ✅ | ✔️ | "error" |
113 | no-eq-null | ✔️ | "error" | |
114 | no-eval | ✔️ | "error" | |
115 | no-ex-assign | ✅ | ✔️ | "error" |
116 | no-extend-native | ✔️ | "error" | |
117 | no-extra-bind | 🔧 | ✔️ | "error" |
118 | no-extra-boolean-cast | ✅🔧 | ✔️ | "error" |
119 | no-extra-label | 🔧 | ✔️ | "error" |
120 | no-extra-parens | 🔧⚠️ | ❌ | |
121 | no-extra-semi | 🔧⚠️ | ✔️ | "error" |
122 | no-fallthrough | ✅ | ✔️ | "error" |
123 | no-floating-decimal | 🔧⚠️ | ✔️ | "error" |
124 | no-func-assign | ✅ | ✔️ | "error" |
125 | no-global-assign | ✅ | ✔️ | "error" |
126 | no-implicit-coercion | 🔧 | ✔️ | "error" |
127 | no-implicit-globals | ❌ | ||
128 | no-implied-eval | ✔️ | "error" | |
129 | no-import-assign | ✅ | ✔️ | "error" |
130 | no-inline-comments | ✔️ | "error" | |
131 | no-inner-declarations | ✔️ | "error" | |
132 | no-invalid-regexp | ✅ | ✔️ | "error" |
133 | no-invalid-this | ❌ | ||
134 | no-irregular-whitespace | ✅ | ✔️ | "error" |
135 | no-iterator | ✔️ | "error" | |
136 | no-label-var | ✔️ | "error" | |
137 | no-labels | ✔️ | "error" | |
138 | no-lone-blocks | ✔️ | "error" | |
139 | no-lonely-if | 🔧 | ❌ | |
140 | no-loop-func | ✔️ | "error" | |
141 | no-loss-of-precision | ✅ | ✔️ | "error" |
142 | no-magic-numbers | ❌ | ||
143 | no-misleading-character-class | ✅ | ✔️ | "error" |
144 | no-mixed-operators | ⚠️ | ✔️ | ["error",{"groups":[["&&","||"]]}] |
145 | no-mixed-requires | ⚠️ | ❌ | |
146 | no-mixed-spaces-and-tabs | ⚠️ | ✔️ | "error" |
147 | no-multi-assign | ✔️ | "error" | |
148 | no-multi-spaces | 🔧⚠️ | ✔️ | "error" |
149 | no-multi-str | ✔️ | "error" | |
150 | no-multiple-empty-lines | 🔧⚠️ | ✔️ | Details["error",{"max":2,"maxBOF":1,"maxEOF":1}] |
151 | no-native-reassign | ⚠️ | ❌ | |
152 | no-negated-condition | ✔️ | "error" | |
153 | no-negated-in-lhs | ⚠️ | ❌ | |
154 | no-nested-ternary | ✔️ | "warn" | |
155 | no-new | ❌ | ||
156 | no-new-func | ❌ | ||
157 | no-new-native-nonconstructor | ✅ | ✔️ | "error" |
158 | no-new-object | ⚠️ | ✔️ | "error" |
159 | no-new-require | ⚠️ | ❌ | |
160 | no-new-symbol | ⚠️ | ✔️ | "error" |
161 | no-new-wrappers | ✔️ | "error" | |
162 | no-nonoctal-decimal-escape | ✅ | ✔️ | "error" |
163 | no-obj-calls | ✅ | ✔️ | "error" |
164 | no-object-constructor | ❌ | ||
165 | no-octal | ✅ | ✔️ | "error" |
166 | no-octal-escape | ✔️ | "error" | |
167 | no-param-reassign | ✔️ | "off" | |
168 | no-path-concat | ⚠️ | ❌ | |
169 | no-plusplus | ❌ | ||
170 | no-process-env | ⚠️ | ❌ | |
171 | no-process-exit | ⚠️ | ❌ | |
172 | no-promise-executor-return | ✔️ | "error" | |
173 | no-proto | ✔️ | "error" | |
174 | no-prototype-builtins | ✅ | ✔️ | "error" |
175 | no-redeclare | ✅ | ✔️ | "error" |
176 | no-regex-spaces | ✅🔧 | ✔️ | "error" |
177 | no-restricted-exports | ❌ | ||
178 | no-restricted-globals | ✔️ | Details["error","event","fdescribe","self"] | |
179 | no-restricted-imports | ❌ | ||
180 | no-restricted-modules | ⚠️ | ❌ | |
181 | no-restricted-properties | ❌ | ||
182 | no-restricted-syntax | ❌ | ||
183 | no-return-assign | ✔️ | "error" | |
184 | no-return-await | ⚠️ | ✔️ | "error" |
185 | no-script-url | ❌ | ||
186 | no-self-assign | ✅ | ✔️ | "error" |
187 | no-self-compare | ✔️ | "error" | |
188 | no-sequences | ✔️ | "error" | |
189 | no-setter-return | ✅ | ✔️ | "error" |
190 | no-shadow | ✔️ | "error" | |
191 | no-shadow-restricted-names | ✅ | ✔️ | "error" |
192 | no-spaced-func | 🔧⚠️ | ❌ | |
193 | no-sparse-arrays | ✅ | ✔️ | "error" |
194 | no-sync | ⚠️ | ❌ | |
195 | no-tabs | ⚠️ | ✔️ | "error" |
196 | no-template-curly-in-string | ✔️ | "error" | |
197 | no-ternary | ❌ | ||
198 | no-this-before-super | ✅ | ✔️ | "error" |
199 | no-throw-literal | ✔️ | "error" | |
200 | no-trailing-spaces | 🔧⚠️ | ✔️ | ["error"] |
201 | no-undef | ✅ | ✔️ | "error" |
202 | no-undef-init | 🔧 | ✔️ | "error" |
203 | no-undefined | ✔️ | "error" | |
204 | no-underscore-dangle | ❌ | ||
205 | no-unexpected-multiline | ✅ | ✔️ | "error" |
206 | no-unmodified-loop-condition | ✔️ | "error" | |
207 | no-unneeded-ternary | 🔧 | ✔️ | "error" |
208 | no-unreachable | ✅ | ✔️ | "error" |
209 | no-unreachable-loop | ✔️ | "error" | |
210 | no-unsafe-finally | ✅ | ✔️ | "error" |
211 | no-unsafe-negation | ✅ | ✔️ | "error" |
212 | no-unsafe-optional-chaining | ✅ | ✔️ | "error" |
213 | no-unused-expressions | ✔️ | "error" | |
214 | no-unused-labels | ✅🔧 | ✔️ | "error" |
215 | no-unused-private-class-members | ✅ | ✔️ | "error" |
216 | no-unused-vars | ✅ | ✔️ | Details["error",{"args":"none","vars":"local","caughtErrors":"none"}] |
217 | no-use-before-define | ❌ | ||
218 | no-useless-assignment | ❌ | ||
219 | no-useless-backreference | ✅ | ✔️ | "error" |
220 | no-useless-call | ❌ | ||
221 | no-useless-catch | ✅ | ✔️ | "error" |
222 | no-useless-computed-key | 🔧 | ✔️ | "error" |
223 | no-useless-concat | ✔️ | "error" | |
224 | no-useless-constructor | ✔️ | "error" | |
225 | no-useless-escape | ✅ | ✔️ | "error" |
226 | no-useless-rename | 🔧 | ✔️ | "error" |
227 | no-useless-return | 🔧 | ✔️ | "error" |
228 | no-var | 🔧 | ✔️ | ["warn"] |
229 | no-void | ❌ | ||
230 | no-warning-comments | ❌ | ||
231 | no-whitespace-before-property | 🔧⚠️ | ✔️ | "error" |
232 | no-with | ✅ | ✔️ | "error" |
233 | nonblock-statement-body-position | 🔧⚠️ | ❌ | |
234 | object-curly-newline | 🔧⚠️ | ✔️ | Details["error",{"ExportDeclaration":{"minProperties":3,"multiline":true},"ImportDeclaration":{"minProperties":3,"multiline":true},"ObjectExpression":{"consistent":true,"minProperties":1,"multiline":true},"ObjectPattern":{"minProperties":3,"multiline":true}}] |
235 | object-curly-spacing | 🔧⚠️ | ✔️ | ["error","always"] |
236 | object-property-newline | 🔧⚠️ | ✔️ | Details["error",{"allowAllPropertiesOnSameLine":true}] |
237 | object-shorthand | 🔧 | ❌ | |
238 | one-var | 🔧 | ✔️ | ["error","never"] |
239 | one-var-declaration-per-line | 🔧⚠️ | ✔️ | ["error","always"] |
240 | operator-assignment | 🔧 | ✔️ | ["error","always"] |
241 | operator-linebreak | 🔧⚠️ | ✔️ | ["error","before"] |
242 | padded-blocks | 🔧⚠️ | ❌ | |
243 | padding-line-between-statements | 🔧⚠️ | ✔️ | Details["error",{"blankLine":"always","next":"*","prev":"directive"},{"blankLine":"any","next":"directive","prev":"directive"},{"blankLine":"always","next":"function","prev":"*"},{"blankLine":"always","next":"block","prev":"*"}] |
244 | prefer-arrow-callback | 🔧 | ❌ | |
245 | prefer-const | 🔧 | ✔️ | "error" |
246 | prefer-destructuring | 🔧 | ❌ | |
247 | prefer-exponentiation-operator | 🔧 | ❌ | |
248 | prefer-named-capture-group | ❌ | ||
249 | prefer-numeric-literals | 🔧 | ✔️ | "error" |
250 | prefer-object-has-own | 🔧 | ❌ | |
251 | prefer-object-spread | 🔧 | ✔️ | "error" |
252 | prefer-promise-reject-errors | ❌ | ||
253 | prefer-reflect | ⚠️ | ❌ | |
254 | prefer-regex-literals | ✔️ | "error" | |
255 | prefer-rest-params | ❌ | ||
256 | prefer-spread | ❌ | ||
257 | prefer-template | 🔧 | ✔️ | "error" |
258 | quote-props | 🔧⚠️ | ❌ | |
259 | quotes | 🔧⚠️ | ✔️ | Details["error","single",{"avoidEscape":true}] |
260 | radix | ❌ | ||
261 | require-atomic-updates | ✔️ | "off" | |
262 | require-await | ✔️ | "error" | |
263 | require-unicode-regexp | ❌ | ||
264 | require-yield | ✅ | ✔️ | "error" |
265 | rest-spread-spacing | 🔧⚠️ | ✔️ | ["error","always"] |
266 | semi | 🔧⚠️ | ✔️ | ["error","always"] |
267 | semi-spacing | 🔧⚠️ | ✔️ | Details["error",{"after":true,"before":false}] |
268 | semi-style | 🔧⚠️ | ✔️ | ["error","last"] |
269 | sort-imports | 🔧 | ❌ | |
270 | sort-keys | ❌ | ||
271 | sort-vars | 🔧 | ❌ | |
272 | space-before-blocks | 🔧⚠️ | ✔️ | ["error","always"] |
273 | space-before-function-paren | 🔧⚠️ | ✔️ | Details["error",{"anonymous":"never","asyncArrow":"always","named":"never"}] |
274 | space-in-parens | 🔧⚠️ | ✔️ | "error" |
275 | space-infix-ops | 🔧⚠️ | ✔️ | ["error",{"int32Hint":false}] |
276 | space-unary-ops | 🔧⚠️ | ✔️ | "error" |
277 | spaced-comment | 🔧⚠️ | ✔️ | "error" |
278 | strict | 🔧 | ❌ | |
279 | switch-colon-spacing | 🔧⚠️ | ✔️ | "error" |
280 | symbol-description | ✔️ | "error" | |
281 | template-curly-spacing | 🔧⚠️ | ✔️ | "error" |
282 | template-tag-spacing | 🔧⚠️ | ✔️ | "error" |
283 | unicode-bom | 🔧 | ✔️ | "error" |
284 | use-isnan | ✅ | ✔️ | "error" |
285 | valid-typeof | ✅ | ✔️ | "error" |
286 | vars-on-top | ❌ | ||
287 | wrap-iife | 🔧⚠️ | ✔️ | ["error","inside"] |
288 | wrap-regex | 🔧⚠️ | ✔️ | "error" |
289 | yield-star-spacing | 🔧⚠️ | ✔️ | "error" |
290 | yoda | 🔧 | ✔️ | "error" |
FAQs
eslint-config-plus
The npm package eslint-config-plus receives a total of 85 weekly downloads. As such, eslint-config-plus popularity was classified as not popular.
We found that eslint-config-plus 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.