1 | # Versions
|
2 |
|
3 | ## v1.0.0 - (25/07/2016)
|
4 |
|
5 | * Project now maintained under the Novivia scope (@novivia) and renamed to
|
6 | "linter". (formerly "eslint-myrules") Options must now be specified
|
7 | using the `novivia-linter` field in the package manifest or using a
|
8 | `.novivialinterrc` file.
|
9 |
|
10 | * New global rules:
|
11 | * Now enforcing return statements in callbacks of array’s methods.
|
12 | (`array-callback-return`)
|
13 | * Now requiring or disallow named function expressions. (`func-names`)
|
14 | * Now ensuring that files begin with the Novivia header. (`header/header`)
|
15 | * Now enforcing consistent spacing before and after keywords.
|
16 | (`keyword-spacing`)
|
17 | * Now validating the file name against the default exported value in the
|
18 | module. (`filenames/match-exported`)
|
19 | * Now enforcing a certain file naming convention.
|
20 | (`filenames/match-regex`)
|
21 | * Now enforcing a maximum file length of 500 lines, excluding whitespace
|
22 | and comments. (`max-lines`)
|
23 | * Now enforcing a maximum number of statements allowed per line.
|
24 | (`max-statements-per-line`)
|
25 | * Now requiring an empty line before return statements.
|
26 | (`newline-before-return`)
|
27 | * Now disallowing deprecated APIs. (`node/no-deprecated-api`)
|
28 | * Now disallowing unnecessary nested blocks. (`no-lone-blocks`)
|
29 | * Now disallowing unmodified conditions of loops.
|
30 | (`no-unmodified-loop-condition`)
|
31 | * Now disallowing control flow statements in finally blocks.
|
32 | (`no-unsafe-finally`)
|
33 | * Now disallowing unnecessary computed property keys on objects.
|
34 | (`no-useless-computed-key`)
|
35 | * Now disallowing unnecessary escape usage. (`no-useless-escape`)
|
36 | * Now disallowing renaming import, export, and destructured assignments to
|
37 | the same name. (`no-useless-rename`)
|
38 | * Now disallowing whitespace before properties.
|
39 | (`no-whitespace-before-property`)
|
40 | * Now enforcing placing object properties on separate lines.
|
41 | (`object-property-newline`)
|
42 | * Now enforcing spacing between rest and spread operators and their
|
43 | expressions. (`rest-spread-spacing`)
|
44 | * Now suggesting the correct usage for the shebang. (`node/shebang`)
|
45 | * Now disallowing the Unicode Byte Order Mark (BOM). (`unicode-bom`)
|
46 | * Security-oriented rules:
|
47 | * Now detecting calls to `Buffer` with the `noassert` flag set.
|
48 | (`security/detect-buffer-noassert`)
|
49 | * Now detecting instances of `child_process` and non-literal
|
50 | `cp.exec()`. (`security/detect-child-process`)
|
51 | * Now detecting variables in the filename argument of `fs` calls.
|
52 | (`security/detect-non-literal-fs-filename`)
|
53 | * Now detecting dynamic regular expressions.
|
54 | (`security/detect-non-literal-regexp`)
|
55 | * Now detecting insecure comparisons.
|
56 | (`security/detect-possible-timing-attacks`)
|
57 | * Now detecting if `pseudoRandomBytes()` is in use.
|
58 | (`security/detect-pseudoRandomBytes`)
|
59 | * Now locating potentially unsafe regular expressions.
|
60 | (`security/detect-unsafe-regex`)
|
61 |
|
62 | * Lo-Dash specific rules:
|
63 | * Now disallowing `thisArg` for Lo-Dash method callbacks.
|
64 | (`lodash/callback-binding`)
|
65 | * Now enforcing a specific chain style. (`lodash/chain-style`)
|
66 | * Now ensuring values returned from collection methods are used
|
67 | properly. (`lodash/collection-method-value`)
|
68 | * Now ensuring a value is always returned in iteratees of Lo-Dash
|
69 | collection methods that aren't `forEach`.
|
70 | (`lodash/collection-return`)
|
71 | * Now enforce a specific function composition direction.
|
72 | (`lodash/consistent-compose`)
|
73 | * Now enforcing `_.identity` shorthand syntax.
|
74 | (`lodash/identity-shorthand`)
|
75 | * Now enforcing `_.matches` property shorthand syntax.
|
76 | (`lodash/matches-prop-shorthand`)
|
77 | * Now enforcing `_.matches` shorthand syntax.
|
78 | (`lodash/matches-shorthand`)
|
79 | * Now disallowing the use of `.commit()` on chains that should end
|
80 | with `.value()`. (`lodash/no-commit`)
|
81 | * Now disallowing the use of `.value()` on chains that have already
|
82 | ended. (`lodash/no-double-unwrap`)
|
83 | * Now disallowing superfluous arguments on Lo-Dash methods with a
|
84 | specified arity. (`lodash/no-extra-args`)
|
85 | * Now disallowing chaining syntax for single methods.
|
86 | (`lodash/no-single-chain`)
|
87 | * Now enforcing a specific path style for methods like `get` and
|
88 | `property`. (`lodash/path-style`)
|
89 | * Now enforcing Lo-Dash chains over nested Lo-Dash calls.
|
90 | (`lodash/prefer-chain`)
|
91 | * Now enforcing `_.compact` over `_.filter` for only truthy values.
|
92 | (`lodash/prefer-compact`)
|
93 | * Now enforcing `_.filter` over `_.forEach` with an if statement
|
94 | inside. (`lodash/prefer-filter`)
|
95 | * Now enforcing `_.flatMap` over consecutive map and `_.flatten`.
|
96 | (`lodash/prefer-flat-map`)
|
97 | * Now enforcing using `_.get` or `_.has` over expression chains like
|
98 | `a && a.b && a.b.c`. (`lodash/prefer-get`)
|
99 | * Now enforcing using `_.invoke` over `_.map` with a method call
|
100 | inside. (`lodash/prefer-invoke-map`)
|
101 | * Now enforcing using `_.isNil` over checks for both null and
|
102 | undefined. (`lodash/prefer-is-nil`)
|
103 | * Now enforcing using `_.map` over `_.forEach` with a push inside.
|
104 | (`lodash/prefer-map`)
|
105 | * Now enforcing using `_.matches` over conditions like
|
106 | `a.foo === 1 && a.bar === 2 && a.baz === 3`.
|
107 | (`lodash/prefer-matches`)
|
108 | * Now enforcing using `_.noop` over empty functions.
|
109 | (`lodash/prefer-noop`)
|
110 | * Now enforcing using `_.overSome` and `_.overEvery` over checks with
|
111 | `&&` and `||` for methods that have a boolean check iteratee.
|
112 | (`lodash/prefer-over-quantifier`)
|
113 | * Now enforcing using `_.reject` over `_.filter` with `!(expression)`
|
114 | or `x.prop1 !== value`. (`lodash/prefer-reject`)
|
115 | * Now enforcing using `_.prototype.thru` in the chain and not calling
|
116 | functions in the initial value. (`lodash/prefer-thru`)
|
117 | * Now enforcing using `_.times` over `_.map` without using the
|
118 | iteratee's arguments. (`lodash/prefer-times`)
|
119 | * Now enforcing using array and string methods in the chain and no
|
120 | the initial value. (`lodash/prefer-wrapper-method`)
|
121 | * Now enforcing using main method names instead of aliases.
|
122 | (`lodash/preferred-alias`)
|
123 | * Now enforcing property shorthand syntax. (`lodash/prop-shorthand`)
|
124 | * Now preventing chaining without evaluation via `value()` or
|
125 | non-chainable methods like `max()`. (`lodash/unwrap`)
|
126 |
|
127 | * New frontend rule:
|
128 | * Now preventing Lo-Dash and React-Bootstrap from being completely
|
129 | imported. (`lean-imports/import`)
|
130 |
|
131 | * New ES2015+ rules:
|
132 | * Now ensuring a default export is present, given a default import.
|
133 | (`import/default`)
|
134 | * Now reporting any invalid exports such as re-exports of the same name.
|
135 | (`import/export`)
|
136 | * Now ensuring consistent use of file extension within the import path.
|
137 | (`import/extensions`)
|
138 | * Now ensuring all imports appear before other statements.
|
139 | (`import/imports-first`)
|
140 | * Now ensuring named imports correspond to a named export in the remote
|
141 | file. (`import/named`)
|
142 | * Now enforcing a newline after import statements.
|
143 | (`import/newline-after-import`)
|
144 | * Now disallowing modifying variables of class declarations.
|
145 | (`no-class-assign`)
|
146 | * Now disallowing arrow functions where they could be confused with
|
147 | comparisons. (`no-confusing-arrow`)
|
148 | * Now disallowing constant expressions in conditions.
|
149 | (`no-constant-condition`)
|
150 | * Now reporting imported names marked with @deprecated documentation tag.
|
151 | (`import/no-deprecated`)
|
152 | * Now disallowing duplicate imports. (`no-duplicate-imports`)
|
153 | * Now forbidding the use of mutable exports with `var` or `let`.
|
154 | (`import/no-mutable-exports`)
|
155 | * Now disallowing the `Symbol` constructor. (`no-new-symbol`)
|
156 | * Now ensuring imported namespaces contain dereferenced properties as they
|
157 | are dereferenced. (`import/no-namespace`)
|
158 | * Now ensuring imports point to a file/module that can be resolved.
|
159 | (`import/no-unresolved`)
|
160 | * Now disallowing unnecessary constructor. (`no-useless-constructor`)
|
161 | * Now suggesting using the rest parameters instead of arguments.
|
162 | (`prefer-rest-params`)
|
163 | * Now disallowing usage of spacing in template strings.
|
164 | (`template-curly-spacing`)
|
165 | * Now enforcing spacing around the `*` in `yield*` expressions.
|
166 | (`yield-star-spacing`)
|
167 | * Now ensuring that a new promise or a value is returned inside a `then()`.
|
168 | (`promise/always-return`)
|
169 | * Now ensuring that each time a `then()` is applied to a promise, a
|
170 | `catch()` is applied as well. (`promise/catch-or-return`)
|
171 | * Now enforcing standard parameter names for Promise constructors.
|
172 | (`promise/param-names`)
|
173 | * Added new Flow-related rules, applied only to files with the `@flow`
|
174 | annotation, so it doesn't become intrusive:
|
175 | * Now requiring that all function parameters have type annotations.
|
176 | (`flowtype/require-parameter-type`)
|
177 | * Now requiring that functions have return type annotation.
|
178 | (`flowtype/require-return-type`)
|
179 | * Now verifying that files have a valid `@flow` annotation. It will
|
180 | report annotations with typos (such as `// @floww`) or not placed at
|
181 | the top of the file. (`flowtype/require-valid-file-annotation`)
|
182 | * Now enforcing consistent spacing after the type annotation colon.
|
183 | (`flowtype/space-after-type-colon`)
|
184 | * Now enforcing consistent spacing before the type annotation colon.
|
185 | (`flowtype/space-before-type-colon`)
|
186 | * Now enforcing a consistent naming pattern for type aliases.
|
187 | (`flowtype/type-id-match`)
|
188 |
|
189 | * New style rules:
|
190 | * Now requiring a newline after each call in a method chain.
|
191 | (`newline-per-chained-call`)
|
192 | * Now disallowing nested ternary expressions. (`no-nested-ternary`)
|
193 | * Now disallowing spacing between function identifiers and their
|
194 | applications. (`no-spaced-func`)
|
195 | * Now disallowing a space before function parenthesis.
|
196 | (`space-before-function-paren`)
|
197 |
|
198 | * New React rules:
|
199 | * Now disallowing spaces around equal signs in JSX attributes.
|
200 | (`react/jsx-equals-spacing`)
|
201 | * Now restricting file extensions that may contain JSX to `.jsx`.
|
202 | (`react/jsx-filename-extension`)
|
203 | * Now preventing the usage of unsafe `target="_blank"`.
|
204 | (`react/jsx-no-target-blank`)
|
205 | * Now preventing comments from being inserted as text nodes.
|
206 | (`react/jsx-no-comment-textnodes`)
|
207 | * Now enforcing the position of the first prop in JSX.
|
208 | (`react/jsx-first-prop-new-line`)
|
209 | * Now enforcing alphabetical props sorting. (`react/jsx-sort-props`)
|
210 | * Now validating spacing before closing bracket in JSX.
|
211 | (`react/jsx-space-before-closing`)
|
212 | * Now preventing usage of the return value of `React.render`.
|
213 | (`react/no-render-return-value`)
|
214 | * Now enforcing stateless React components to be written as pure
|
215 | functions. (`react/prefer-stateless-function`)
|
216 | * Now enforcing React components to have a `shouldComponentUpdate` method.
|
217 | (`react/require-optimization`)
|
218 | * Now enforcing ES2015+ classes extending `React.Component` to return
|
219 | a value in their render function. (`react/require-render-return`)
|
220 |
|
221 | * Updated rules:
|
222 | * Reduced the minimum identifier length to 2 in the `id-length` rule, as
|
223 | there were too many relevant 3-letter identifiers.
|
224 | * Now ignoring array indexes in the `no-magic-numbers` rule.
|
225 |
|
226 | * Removed rules:
|
227 | * `no-negated-condition`
|
228 |
|
229 | * New dependencies:
|
230 | * `@novivia/open-sourcer`
|
231 | * `babel-cli`.
|
232 | * `babel-plugin-syntax-trailing-function-commas`.
|
233 | * `babel-plugin-transform-es2015-destructuring`.
|
234 | * `babel-plugin-transform-es2015-modules-commonjs`.
|
235 | * `babel-plugin-transform-es2015-parameters`.
|
236 | * `babel-register`.
|
237 | * `eslint-plugin-filenames`.
|
238 | * `eslint-plugin-flowtype`.
|
239 | * `eslint-plugin-header`.
|
240 | * `eslint-plugin-import`.
|
241 | * `eslint-plugin-jsx-a11y`.
|
242 | * `eslint-plugin-lean-imports`.
|
243 | * `eslint-plugin-lodash`.
|
244 | * `eslint-plugin-markdown`.
|
245 | * `eslint-plugin-new-with-error`.
|
246 | * `eslint-plugin-node`.
|
247 | * `eslint-plugin-promise`.
|
248 | * `eslint-plugin-security`.
|
249 | * `eslint-plugin-you-dont-need-lodash-underscore`.
|
250 |
|
251 | * Updated dependencies:
|
252 | * `@novivia/build-module` to v0.3.
|
253 | * `babel-eslint` to v6.
|
254 | * `eslint` to v3.
|
255 | * `eslint-plugin-flow-vars` to v0.4.
|
256 | * `eslint-plugin-react` to v6-alpha.2.
|
257 |
|
258 |
|
259 | ## v0.6.3 - (13/01/2016)
|
260 |
|
261 | * Updated `babel-eslint` to v5-beta6.
|
262 |
|
263 |
|
264 | ## v0.6.2 - (12/01/2016)
|
265 |
|
266 | * Updated rule:
|
267 | * No longer enforcing the use of `const` outside ES2015 environments for the
|
268 | `no-magic-numbers` global rule.
|
269 |
|
270 |
|
271 | ## v0.6.1 - (12/01/2016)
|
272 |
|
273 | * Fixed configuration mistake for the `jsx-handler-names` React rule.
|
274 |
|
275 |
|
276 | ## v0.6.0 - (12/01/2016)
|
277 |
|
278 | * New global rule:
|
279 | * Now disallowing the use of lexical declarations in `case`/`default`
|
280 | clauses. (`no-case-declarations`)
|
281 |
|
282 | * New ES2015+ rule:
|
283 | * Now disallowing the use of `await` in loops. (`no-await-in-loop`)
|
284 |
|
285 | * New style rule:
|
286 | * Now requiring the use of the second argument for `parseInt`, unless it's
|
287 | the value 10. (`radix`)
|
288 |
|
289 | * New React rules:
|
290 | * Now ensuring that any component or prop methods used to handle events are
|
291 | correctly prefixed. (`jsx-handler-names`)
|
292 | * Now enforcing component indentation. (`jsx-indent`)
|
293 | * Now pointing out missing key properties. (`jsx-key`)
|
294 | * Now enforcing PascalCase for component names. (`jsx-pascal-case`)
|
295 | * Now disallowing the use of deprecated React methods. (`no-deprecated`)
|
296 | * Now disallowing the use of `isMounted`. (`no-is-mounted`)
|
297 | * Now disallowing the use of strings for refs. (`no-string-refs`)
|
298 |
|
299 | * Updated rules:
|
300 | * Now allowing `setState` calls in functions inside `componentDidUpdate`,
|
301 | for the `no-did-update-set-state` React rule.
|
302 | * Added the following exceptions to the `id-length` rule:
|
303 | * `fs`
|
304 | * `i`
|
305 | * `j`
|
306 | * `k`
|
307 | * `log`
|
308 |
|
309 | * New dependency:
|
310 | * `eslint-plugin-flow-vars`.
|
311 |
|
312 | * Updated dependency:
|
313 | * `@auex/build-module` to v0.2.
|
314 |
|
315 |
|
316 | ## v0.5.3 - (18/12/2015)
|
317 |
|
318 | * Updated `eslint-myrules-manager` to v0.5 to fix crash pertaining to recent
|
319 | ESLint internal modification.
|
320 |
|
321 |
|
322 | ## v0.5.2 - (06/11/2015)
|
323 |
|
324 | * Added the following exceptions to the `no-underscore-dangle` rule:
|
325 | * `__DEV__`
|
326 | * `__PRERENDER__`
|
327 | * `__PROD__`
|
328 | * `__STAGE__`
|
329 | * `__TEST_ENV__`
|
330 | * `_id`
|
331 |
|
332 | * Added the following exceptions to the `id-length` rule:
|
333 | * `key`
|
334 | * `src`
|
335 | * `url`
|
336 |
|
337 | * Added an exception for `self` in the `no-shadow` rule.
|
338 | * Relaxed the format requirement for descriptions in the `valid-jsdoc` rule.
|
339 | * Added an exception for the `?` operator in the `operator-linebreak` style
|
340 | rule. It now has to be at the end of a multi-line statement like all other
|
341 | operators except for `:`. This is how it should already have been.
|
342 |
|
343 |
|
344 | ## v0.5.1 - (05/11/2015)
|
345 |
|
346 | * Properly removed all leftovers from the removed
|
347 | `eslint-plugin-shadow-exception` ESLint plugin.
|
348 |
|
349 |
|
350 | ## v0.5.0 - (03/11/2015)
|
351 |
|
352 | * New ES2015 rules:
|
353 | * Now disallowing arrow functions where a condition is expected.
|
354 | (`no-arrow-condition`)
|
355 | * Now enforcing proper arrow body style depending on body content.
|
356 | (`arrow-body-style`)
|
357 |
|
358 | * Updated rules:
|
359 | * Now only allowing 1 empty line to end a file when enforcing the
|
360 | `no-multiple-empty-lines` style rule.
|
361 |
|
362 | ## v0.4.0 - (29/10/2015)
|
363 |
|
364 | * New global rules:
|
365 | * Now disallowing the use of magic numbers. (`no-magic-numbers`)
|
366 | * Now disallowing the assignment of function expressions, except in the case
|
367 | of arrow functions. (`func-style`)
|
368 | * Now disallowing the use of undeclared variables, except if they're known
|
369 | globals. (`no-undef`)
|
370 | * Now disallowing dangling underscores in identifiers with the exception of
|
371 | `_id`. (`no-underscore-dangle`)
|
372 |
|
373 | * New style rules:
|
374 | * Now disallowing spaces inside of single line blocks. (`block-spacing`)
|
375 | * Now disallowing negated conditions in lone if statements.
|
376 | (`no-negated-condition`)
|
377 | * Now requiring a space before all keywords. (`space-before-keywords`)
|
378 | * Now requiring a space after all keywords. (`space-after-keywords`)
|
379 |
|
380 | * New ES2015 rules:
|
381 | * Now disallowing duplicate names in class members.
|
382 | (`no-dupe-class-members`)
|
383 | * Now disallowing unnecessary concatenation of literals or template
|
384 | literals. (`no-useless-concat`)
|
385 | * Now disallowing empty destructuring patterns. (`no-empty-pattern`)
|
386 | * Now suggesting to use arrow functions as callbacks.
|
387 | (`prefer-arrow-callback`)
|
388 | * Now suggesting to use template literals instead of strings concatenation.
|
389 | (`prefer-template `)
|
390 |
|
391 | * New React rules:
|
392 | * Now disallowing the direct mutation of `this.state`.
|
393 | (`no-direct-mutation-state`)
|
394 | * Now suggesting components to be ES2015 classes. (`prefer-es6-class`)
|
395 | * Now enforcing the closing bracket location for JSX multiline elements.
|
396 | (`jsx-closing-bracket-location`)
|
397 | * Now validating a specific indentation style for props.
|
398 | (`jsx-indent-props`)
|
399 |
|
400 | * Updated rules:
|
401 | * Now ignoring object properties when enforcing the `id-length` global rule.
|
402 | * Now allowing the following identifiers when enforcing the `id-length`
|
403 | global rule:
|
404 | * `_`
|
405 | * `__`
|
406 | * `db`
|
407 | * `lot`
|
408 |
|
409 | * Now allowing short-circuiting and ternary expressions in the
|
410 | `no-unused-expressions` global rule.
|
411 | * Now allowing comments at the start of arrays, array-likes, objects and
|
412 | object-likes in the `lines-around-comment` style rule. (`allowArrayStart`
|
413 | and `allowObjectStart`)
|
414 | * Now expecting properties beginning with "on" to be last in a component's
|
415 | `propTypes`. (`callbacksLast`)
|
416 |
|
417 | * Updated dependency:
|
418 | * `eslint-myrules-manager` to v0.4 and adjusted configuration accordingly.
|
419 |
|
420 |
|
421 | ## v0.3.0 - (19/08/2015)
|
422 |
|
423 | * Modified rules:
|
424 | * Now ignoring URLs in the `max-len` rule.
|
425 | * Now enforcing indentation for switch-cases and variable declarations in
|
426 | the `indent` rule.
|
427 |
|
428 | * New rules:
|
429 | * Now disallowing unnecessary `.call()` and `.apply()`. (`no-useless-call`)
|
430 | * Now enforcing the use of `return` when executing a callback, unless it's
|
431 | the last operation. (`callback-return`)
|
432 |
|
433 | * New ES2015 rules:
|
434 | * Now enforcing arrow function spacing. (`arrow-spacing`)
|
435 | * Now enforcing trailing commas on multiline arrays and objects.
|
436 | (`comma-dangle`)
|
437 | * Now disallowing the use of multiple spaces in all cases.
|
438 | (`no-multi-spaces`)
|
439 | * Now disallowing mixing regular variable and require declarations.
|
440 | (`no-mixed-requires`)
|
441 | * Now disallowing modifying variables of class declarations
|
442 | (`no-class-assign`)
|
443 | * Now disallowing modifying variables that are declared using `const`
|
444 | (`no-const-assign`)
|
445 | * Now disallowing the `this` keyword outside of classes or class-like
|
446 | objects (`no-invalid-this`)
|
447 | * Now disallowing reassignment of function parameters. (`no-param-reassign`)
|
448 | * Now suggesting to use Reflect methods where applicable. (`prefer-reflect`)
|
449 | * Now suggesting to use the spread operator instead of `.apply()`.
|
450 | (`prefer-spread`)
|
451 | * Now disallowing generator functions that do not have `yield`.
|
452 | (`require-yield`)
|
453 | * Now preventing the use of any `strict` directive. (`strict`)
|
454 |
|
455 | * Under the hood: Updated ESLint to 1.1, eslint-plugin-react to 3.2 and
|
456 | eslint-plugin-babel to 2.0. As a result, added rules that were on by default
|
457 | prior to ESLint 1.0.
|
458 |
|
459 |
|
460 | ## v0.2.0 - (31/07/2015)
|
461 |
|
462 | * Package now scoped under @auex and published in private npm.
|
463 | * Added change log (This!)
|