UNPKG

117 kBMarkdownView Raw
1## Version [3.0.7](https://github.com/jscs-dev/node-jscs/compare/v3.0.6...v3.0.7) (2016-07-14):
2
3* validateParameterSeparator: notice class methods (Oleg Gaidarenko)
4
5## Version [3.0.6](https://github.com/jscs-dev/node-jscs/compare/v3.0.5...v3.0.6) (2016-07-01):
6
7### Bug fixes
8
9* requireDollarBeforejQueryAssignment: do not blow up on reset parameter (Oleg Gaidarenko)
10
11### Misc
12* Misc: explicitly use latest CST version (Oleg Gaidarenko)
13* Misc: fix typo in the changelog (Oleg Gaidarenko)
14* Misc: bump CST version to 0.4.2 (Oleg Gaidarenko)
15
16
17## Version [3.0.5](https://github.com/jscs-dev/node-jscs/compare/v3.0.4...v3.0.5) (2016-06-21):
18
19Small fixes for ES6/7 related to [CST](https://github.com/cst/cst) which consisted of updating this package since those fixes were made in there.
20
21And also there is one fix related to `fileExtension` option
22
23### Bug fixes
24* Configuration: Do not set default options if preset is set (Oleg Gaidarenko)
25* Misc: bump CST version to 0.4.0 (Oleg Gaidarenko)
26* Docs: remove yandex preset from overview (Oleg Gaidarenko)
27* Docs: add intro delimiter to readme (Oleg Gaidarenko)
28* Misc: use correct headers in changelog (Oleg Gaidarenko)
29* Misc: correct changelog auto-replace result (Oleg Gaidarenko)
30* Misc: correct changelog jscs version (Oleg Gaidarenko)
31* Misc: changelog should be consistent (Oleg Gaidarenko)
32
33## Version [3.0.4](https://github.com/jscs-dev/node-jscs/compare/v3.0.3...v3.0.4) (2016-06-04):
34
35Fixed some bugs, correctly output CST errors plus improve speed and memory consumption
36
37### Bug fixes
38* requireObjectKeysOnNewLine: do not break on object methods (Oleg Gaidarenko)
39* Fix: Last method throw in requireObjectKeysOnNewLine (Alexey Yaroshevich)
40* disallowQuotedKeysInObjects: ignore spread properties (Oleg Gaidarenko)
41* maximumLineLength: correctly position error for comment nodes (Oleg Gaidarenko)
42* disallowUnusedParams: notice AssignmentPattern nodes (Oleg Gaidarenko)
43* disallowPaddingNewlinesBeforeKeywords: should not ignore comments (Oleg Gaidarenko)
44* disallowObjectKeysOnNewLine: correct error message (Oleg Gaidarenko)
45
46### Misc
47* Misc: make linters happy (Oleg Gaidarenko)
48* Misc: add node 6 to travis (Oleg Gaidarenko)
49* Misc: do not modify CST in check mode (#2252) (Oleg Gaidarenko)
50* Misc: remove rules "grouping" (Oleg Gaidarenko)
51* Misc: bump cst version (Oleg Gaidarenko)
52* Tests: remove mocha `.only` call (Oleg Gaidarenko)
53* Misc: parallelizing build on travis (Alexey Yaroshevich)
54* Misc: Set higher timeout for config generator tests (Alexey Yaroshevich)
55* Build: update cst to 0.3.0 (Henry Zhu)
56* Errors: add ugly exception for `validateQuoteMarks` of position calc (Oleg Gaidarenko)
57* Errors: always add to `line` and `column` properties (Oleg Gaidarenko)
58
59### Docs
60* Docs: Fix small typo in require-early-return (#2259) (Sander Boom)
61* add jscs+eslint info (#2230) (Henry Zhu)
62* Docs: simplify readme a bit more (Oleg Gaidarenko)
63* Docs: deprecation clean-up (Oleg Gaidarenko)
64* requireCurlyBraces: small docs corrections (Oleg Gaidarenko)
65
66## Version [3.0.3](https://github.com/jscs-dev/node-jscs/compare/v3.0.2...v3.0.3) (2016-02-16):
67
68### Bug fixes
69- Misc: Make an exception for esnext/verbose since they are removed
70- Revert "Configuration: exclude nested node_modules by default
71
72## Version [3.0.2](https://github.com/jscs-dev/node-jscs/compare/v3.0.1...v3.0.2) (2016-02-15):
73
74### Bug fixes
75- Revert all rule deprecations
76
77## Version [3.0.1](https://github.com/jscs-dev/node-jscs/compare/v3.0.0...v3.0.1) (2016-02-14):
78
79### Bug fixes
80- disallowUnusedVariables: was including function expressions
81
82## Version [3.0.0](https://github.com/jscs-dev/node-jscs/compare/v2.11.0...v3.0.0) (2016-04-14):
83
84Hell yeah! 3.0 is here. First and foremost we rewrote every... single... rule. We fixed a plentiful amount of bugs (most of which were found during refactoring those rules using [CST](https://github.com/cst/cst)). This provides us the opportunity to include autofix for complicated rules like the brand new `disallowUnusedVariables` rule (see below).
85
86### Breaking Changes
87If you aren't a plugin writer or support build extensions (like grunt or gulp), etc you don't have to worry about anything.
88
89We didn't rename/remove any rules. All you should have to do to update is just bump the `jscs` version in your `package` version to `3.0.0` and be done with it.
90
91#### Configuration
92These following config options have been replaced in 3.0:
93
94- `--esnext` (-e) // enabled by default
95- `--esprima` (-s) and `--esprimaOptions` // babylon is the underlying CST parser
96- `--verbose` // also enabled by default to show rule name when there is an error
97
98One thing to notice though: the `yandex` preset was removed. Since Yandex doesn't have official code style (don't look at the https://github.com/ymaps/codestyle), we were requested to remove it
99
100One drawback from all these changes is that JSCS might be a little, just a little slower, so if you find any issues related to that - don't hesitate to [drop](https://github.com/jscs-dev/node-jscs/issues/new) us a line, or just drop us a line we are all friendly :).
101
102### New rules
103Since this release is about rewrite of internal design, we adding only four new rules (all of them were added by our contributors!).
104
105#### [`disallowUnusedVariables`](http://jscs.info/rule/disallowUnusedVariables) by Brian Schemp
106That rule useful when you have `var x = <whatever>` and you don't export that `x` and don't use it. This rule will highlight that and remove it if you want.
107
108#### [`disallowSpacesInsideImportedObjectBraces`](http://jscs.info/rule/disallowSpacesInsideImportedObjectBraces) and [`requireSpacesInsideImportedObjectBraces`](http://jscs.info/rule/requireSpacesInsideImportedObjectBraces) by Maks Sadowsky
109When you need or don't need additional parentheses -
110```js
111import /*–>*/{foo, bar}/*<–*/ from 'foo-bar';
112```
113
114#### [`requireUseStrict`](http://jscs.info/rule/requireUseStrict`) Erik Vold
115Short and cool - ask you to use `"use strict"` pragma on top of the file if you so desire.
116
117#### [`requireImportAlphabetized`](http://jscs.info/rule/requireImportAlphabetized) by Ray Hammond
118Keeps your imports alphabetized, pretty handy way to keep your dependency in tidy state.
119
120### Presets
121* Preset: allow URLs inside comments for airbnb (andreyvolokitin)
122* Preset: add `requireSpaceBeforeObjectValues` rule to airbnb preset (Oleg Gaidarenko)
123* Preset: add `requireSpacesInsideImportedObjectBraces` to airbnb (Maks Sadowsky)
124* Preset: Add 'requireSpaceBetweenArguments' to google preset (Jon Merrifield)
125
126### Internal
127There are a lot of internal changes but we like to keep this changelog short and tidy. We will continue to update this shortly.
128
129## Version [2.11.0](https://github.com/jscs-dev/node-jscs/compare/v2.10.1...v2.11.0) (2016-03-01):
130
131Spring release! Yeah, yeah, technically spring only comes in middle of the March (you nerds, you), but we're coming to you a bit earlier!
132
133Anyways, there are three new rules, a couple of changes for the `airbnb` preset and important fixes for [`disallowSpacesInsideTemplateStringPlaceholders`](http://jscs.info/rule/disallowSpacesInsideTemplateStringPlaceholders) and [`validateQuoteMarks`](http://jscs.info/rule/validateQuoteMarks) (for all you ES7 lovers).
134
135### New Rules
136
137### [`requireSpaceBeforeDestructuredValues`](http://jscs.info/rule/requireSpaceBeforeDestructuredValues) by Maks Sadowsky
138
139Enforces colon spacing after destructuring assignment i.e. [`requireSpaceBeforeObjectValues`](http://jscs.info/rule/requireSpaceBeforeObjectValues) but for destructuring.
140
141```js
142// good
143const { String: EmberString } = Ember;
144
145// bad
146const { String:EmberString } = Ember;
147```
148
149### [`disallowArrayDestructuringReturn`](http://jscs.info/rule/disallowArrayDestructuringReturn) by Maks Sadowsky
150
151Enforces the [5:3 verse](https://github.com/airbnb/javascript#5.3) of airbnb code style, which prohibits use of array destructuring for thy `CallExpressions`.
152
153```js
154// God is on your side
155const { left, right } = processInput(input);
156
157// Devil is on your shoulder!
158const [left, __, top] = processInput(input);
159```
160
161### [`requireNewlineBeforeSingleStatementsInIf`](http://jscs.info/rule/requireNewlineBeforeSingleStatementsInIf) by Brian Schemp
162
163Enforces using newlines in your *parenthesesless* code.
164
165```js
166
167// Cool stairs brah
168if (x)
169 doX();
170else
171 doY();
172
173// Just how could you have "X" and "Y"'s on the same line?!
174if (x) doX();
175else doY();
176```
177
178### Presets
179* Preset: ease up on `requireCamelCaseOrUpperCaseIdentifiers` in airbnb (Oleg Gaidarenko)
180* Preset: add `disallowArrayDestructuringReturn` to airbnb preset (Maks Sadowsky)
181
182### Bug fixes
183* `disallowSpacesInsideTemplateStringPlaceholders`: check template literal (ikokostya)
184* `validateQuoteMarks`: do not throw on es7 decorators (Oleg Gaidarenko)
185
186Other commits (as always) are omitted, since they're all about internal stuff and we care about your viewing pleasure.
187
188## Version [2.10.1](https://github.com/jscs-dev/node-jscs/compare/v2.10.0...v2.10.1) (2016-02-15):
189
190### Bug fixes
191- Regression in `requireSpaceBeforeKeywords` [#2135](https://github.com/jscs-dev/node-jscs/issues/2135)
192
193## Version [2.10.0](https://github.com/jscs-dev/node-jscs/compare/v2.9.0...v2.10.0) (2016-02-15):
194
195Happy Presidents Day!
196
197In this release, it's just some additional rules to update to the airbnb preset, new rules, and fixes.
198
199### Preset Changes
200
201* Add `maximumLineLength` to the `airbnb` preset [(reference)](https://github.com/airbnb/javascript#18.12) (Oleg Gaidarenko)
202* Add `disallowSpacesInsideTemplateStringPlaceholders` to the `airbnb` preset (not explicit but used in examples) (Oleg Gaidarenko)
203* Add `disallowNewlineBeforeBlockStatements` rule to the `mdcs` preset [(reference)](https://github.com/mrdoob/three.js/wiki/Mr.doob's-Code-Style%E2%84%A2#blocks) (Mauricio Massaia)
204
205### New Rules
206
207#### `disallowSpacesInsideTemplateStringPlaceholders`
208(ikokostya)
209
210> Disallows spaces before and after curly brace inside template string placeholders.
211
212```js
213// usage in config
214"disallowSpacesInsideTemplateStringPlaceholders": true
215```
216
217```js
218// Valid
219`Hello ${name}!`
220```
221
222```js
223// Invalid
224`Hello ${ name}!`
225`Hello ${name }!`
226`Hello ${ name }!`
227```
228
229#### `requireImportsAlphabetized` (Ray Hammond)
230
231> Requires imports to be alphabetized
232
233```js
234// usage in config
235"requireImportAlphabetized": true
236```
237
238```js
239// Valid
240import a from 'a';
241import c from 'c';
242import z from 'z';
243```
244
245```js
246// Invalid
247import a from 'a';
248import z from 'z';
249import c from 'c';
250```
251
252### Rule Updates
253
254* `requireSpaceBeforeKeywords`: add a `allExcept` option for filtering out default keywords (gpiress)
255 * This allows you do specify exceptions to the all keywords instead of creating an array of whitelisted keywords when you only want to blacklist a few.
256
257### Bug fixes
258
259* `requireNumericLiterals`: miss if first argument is an Identifier (Robert Jackson)
260* `disallowSpacesInsideTemplateStringPlaceholders`: skip the edge case (Oleg Gaidarenko)
261* `requirePaddingNewLinesBeforeExport`: exclude if only statement in block (Brian Schemp)
262* `maximumLineLength`: some nodes might contain null values (Oleg Gaidarenko)
263
264### Docs
265
266* Correct date in the changelog (Oleg Gaidarenko)
267* Various rule corrections (Christopher Cook)
268
269## Version [2.9.0](https://github.com/jscs-dev/node-jscs/compare/v2.8.0...v2.9.0) (2016-01-23):
270
271> Changed the changelog date format to be YYYY-MM-DD.
272
273Whoo a release during this blizzard! Hopefully, this will be our last release before we start pushing out pre-release versions of 3.0. (If necessary, we can push bug fixes to 2.x)
274
275The plan:
276
277- Push the `2.9.0` release
278- Create a `2.x` branch off of `master`
279- Switch `master` to be the `3.0` branch
280- Merge in 2.x changes + cleanup stuff for a 3.0 alpha release.
281- Do what we can in our [3.0 milestone](https://github.com/jscs-dev/node-jscs/issues/1854). We would really appreciate any help!
282 - Especially for deprecating rules/options, rule merging, renames/inconsistencies that we don't catch.
283
284### New Rules
285
286#### [`requireCapitalizedConstructorsNew`](http://jscs.info/rule/requireCapitalizedConstructorsNew) (Alexander O'Mara)
287
288```js
289// Description: Requires capitalized constructors to to use the `new` keyword
290
291// Usage
292"requireCapitalizedConstructors": {
293 "allExcept": ["somethingNative"]
294}
295
296// Valid
297var x = new Y();
298var x = new somethingNative(); // exception
299
300// Invalid
301var x = Y();
302```
303
304### Rule Updates
305
306- [`validateNewlineAfterArrayElements`](http://jscs.info/rule/validateNewlineAfterArrayElements): add autofix support for this rule (Joeri de Gooijer)
307
308```js
309// can turn
310var a = [0,
3111,
3122];
313
314// into
315var a = [
3160,
3171,
3182
319];
320```
321
322This was [@joerideg's](https://github.com/joerideg) first PR, so congrats and hope to see more contributions (not necessarily here)!
323
324> I think we would need a seperate rule to both check/fix alignment properly.
325
326- [`requireSemicolons`](http://jscs.info/rule/requireSemicolons): account for stage-2 `ClassProperty` (Henry Zhu)
327
328```js
329class A {
330 prop; // will add a semicolon here
331 prop2 = 1; // and here
332}
333```
334
335- [`requireCamelCaseOrUpperCaseIdentifiers`](http://jscs.info/rule/requireCamelCaseOrUpperCaseIdentifiers): add extra options `allowedPrefixes, allowedSuffixes, allExcept`
336
337 - This lets you specify a permitted array of String, RegExp, or ESTree RegExpLiteral values
338
339For options: `{ allowedSuffixes: ["_dCel", {regex:{pattern:"_[kMG]?Hz"}}] }`
340
341```js
342// Extra valid options
343var camelCase_dCel = 5;
344var _camelCase_MHz = 6;
345 ```
346
347```js
348// Invalid
349var camelCase_cCel = 4;
350var CamelCase_THz = 5;
351```
352
353- [`requireNewlineBeforeBlockStatements`](http://jscs.info/rule/requireNewlineBeforeBlockStatements), [`disallowNewlineBeforeBlockStatements`](http://jscs.info/rule/disallowNewlineBeforeBlockStatements): account for `SwitchStatement`
354
355```js
356// Valid for requireNewlineBeforeBlockStatements
357switch (a)
358{
359 case 1: break;
360}
361
362// Valid for disallowNewlineBeforeBlockStatements
363switch (a) {
364 case 1: break;
365}
366```
367
368### Presets
369
370- `airbnb`: Enforce rule [25.1](https://github.com/airbnb/javascript/blob/c25dbac620b258c4421251bc403fffa1051de61e/README.md#25.1) (Joe Bartlett)
371 - This adds `requireDollarBeforejQueryAssignment`
372- `airbnb`: Enforce rule [7.11](https://github.com/airbnb/javascript/blob/c25dbac620b258c4421251bc403fffa1051de61e/README.md#7.11) (Joe Bartlett)
373 - This fixes up function spacing issues (autofixable)
374- `google`: Enforce [naming rules](https://google.github.io/styleguide/javascriptguide.xml#Naming__body)
375 - This adds `"requireCamelCaseOrUpperCaseIdentifiers": {
376 "allowedPrefixes": ["opt_"],
377 "allExcept": ["var_args"]
378}`
379
380### Bug fixes
381
382- [`requireEnhancedObjectLiterals`](http://jscs.info/rule/requireEnhancedObjectLiterals): Don't error for computed properties (Henry Zhu)
383- [`requireTemplateStrings`](http://jscs.info/rule/requireTemplateStrings): should not report string to binary (Oleg Gaidarenko)
384- [`requireVarDeclFirst`](http://jscs.info/rule/requireVarDeclFirst): be aware of the comments (Kushan Joshi)
385
386### Misc
387- `OVERVIEW.md`: add the [Visual Studio Code extension](https://marketplace.visualstudio.com/items/ms-vscode.jscs) to list of "Friendly Packages" (Tyler Hughes)
388
389## Version [2.8.0](https://github.com/jscs-dev/node-jscs/compare/v2.7.0...v2.8.0)
390
391Happy new year! Small changes this time, small, but important fixes which still warrants the minor bump.
392
393Aside from bug fixes, this update includes improvement for the airbnb preset and `allExcept` option for the [`disallowNewlineBeforeBlockStatements`](http://jscs.info/rule/disallowNewlineBeforeBlockStatements)
394
395
396## Version [2.7.0](https://github.com/jscs-dev/node-jscs/compare/v2.6.0...v2.7.0)
397
398It's this time of the year again, 2.7 is here!
399
400One new rule, cool amount of fixes and massive jsdoc rule set update.
401
402### New Rules
403
404Although there's only one new rule in this release, it's pretty powerful! Say thanks to @ficristo!
405
406#### [`requireEarlyReturn`](http://jscs.info/rule/requireEarlyReturn)
407
408```js
409// This is cool
410function test() {
411 if (x) {
412 return x;
413 }
414 return y;
415}
416
417// This is not
418function test() {
419 if (x) {
420 return x;
421 } else {
422 return y;
423 }
424}
425```
426
427This is one of the most popular patterns out there, such as in [idiomatic](https://github.com/rwaldron/idiomatic.js/) and [node-style-guide](https://github.com/felixge/node-style-guide).
428
429### Presets
430- The `idiomatic` and `node-style-guide` presets now have the `requireEarlyReturn` rule.
431- Whereas the `airbnb` preset is better in treating JSX.
432
433### Bug fixes
434
435* [`disallowTrailingWhitespace`](http://jscs.info/rule/disallowTrailingWhitespace) changes for autofix (thanks @lukeapage!)
436* `requirePaddingNewlinesBeforeKeywords`: allow function return on the same line
437* `disallowMixedSpacesAndTabs`: fix issue with erroring on block comments
438* `auto-configure`: set `maxErrors` to `Infinity`
439
440### Notable Changes in [`jsDoc`](http://jscs.info/rule/jsDoc)
441
442* Improves ES6 support for `enforceExistence`: add exceptions for arrow functions and ES6 modules exports
443* Many fixes related to `requireDescriptionCompleteSentence`
444* Fixes for incorrecly sticked docblocks to IIFE
445* Docblocks without tags now parsing correctly
446* Adds `@override` to `jsdoc3` preset
447* Arrow functions now treats as usual functions
448
449See the full list in [jscs-jsdoc changelog](https://github.com/jscs-dev/jscs-jsdoc/blob/master/CHANGELOG.md#user-content-v130---2015-12-05).
450
451
452## Version [2.6.0](https://github.com/jscs-dev/node-jscs/compare/v2.5.1...v2.6.0) (11-18-2015):
453
454Thanks to @seanpdoyle, we're able to move some of the ES6 rules from [ember-suave](https://github.com/dockyard/ember-suave) to JSCS!
455
456### New Rules
457
458#### [`disallowVar`](http://jscs.info/rule/disallowVar) (Sean Doyle)
459
460Disallows declaring variables with `var`.
461
462`"disallowVar": true`
463
464```js
465// Valid
466let foo;
467const bar = 1;
468```
469
470```js
471// Invalid
472var baz;
473```
474
475You can also use `"disallowKeywords": ["var"]`
476
477#### [`requireArrayDestructuring`](http://jscs.info/rule/requireArrayDestructuring) (Sean Doyle)
478
479Requires that variable assignment from array values are destructured.
480
481`"requireArrayDestructuring": true`
482
483```js
484// Valid
485var colors = ['red', 'green', 'blue'];
486var [ red ] = colors;
487```
488
489```js
490// Invalid
491var colors = ['red', 'green', 'blue'];
492var red = colors[0];
493```
494
495#### [`requireEnhancedObjectLiterals`](http://jscs.info/rule/requireEnhancedObjectLiterals) (Sean Doyle)
496
497Requires declaring objects via ES6 enhanced object literals (shorthand versions of properties)
498
499`"requireEnhancedObjectLiterals": true`
500
501```js
502var obj = {
503 foo() { },
504 bar
505};
506```
507
508```js
509var obj = {
510 foo: function() { },
511 bar: bar
512};
513```
514
515#### [`requireObjectDestructuring`](http://jscs.info/rule/requireObjectDestructuring) (Sean Doyle)
516
517Requires variable declarations from objects via destructuring
518
519`"requireObjectDestructuring": true`
520
521```js
522// Valid
523var { foo } = SomeThing;
524var { bar } = SomeThing.foo;
525```
526
527```js
528// Invalid
529var foo = SomeThing.foo;
530var bar = SomeThing.foo.bar;
531```
532
533#### [`disallowSpacesInGenerator`](http://jscs.info/rule/disallowSpacesInGenerator) (Francisc Romano)
534
535Checks the spacing around the `*` in a generator function.
536
537```js
538"disallowSpacesInGenerator": {
539 "beforeStar": true,
540 "afterStar": true
541}
542```
543
544```js
545var x = function*() {};
546function*a() {};
547var x = async function*() {};
548```
549
550### New Rule Options
551
552* `requireCamelCaseOrUpperCaseIdentifiers`: add `strict` option (Jan-Pieter Zoutewelle)
553
554Also forces the first character to not be capitalized.
555
556```js
557"requireCamelCaseOrUpperCaseIdentifiers": {
558 "strict": true
559}
560```
561
562```js
563// Valid
564var camelCase = 0;
565var UPPER_CASE = 4;
566
567// Invalid
568var Mixed_case = 2;
569var Snake_case = { snake_case: 6 };
570var snake_case = { SnakeCase: 6 };
571```
572
573* `disallowSpace(After|Before)Comma`: add `allExcept: ['sparseArrays']` (Brian Dixon)
574* `validateQuoteMarks`: add "ignoreJSX" value (Oleg Gaidarenko)
575* `requireMatchingFunctionName`: add `includeModuleExports` option (George Chung)
576
577### Fixes
578
579* Account for sparse arrays in rules with spacing and commas (Brian Dixon)
580
581 - [`disallowCommaBeforeLineBreak`](http://jscs.info/rule/disallowCommaBeforeLineBreak)
582 - [`requireCommaBeforeLineBreak`](http://jscs.info/rule/requireCommaBeforeLineBreak)
583
584* `requireSpaceBeforeBinaryOperators`: report "operator =" correctly when erroring (Rob Wu)
585* `requireAlignedMultilineParams`: do not throw on function without body (Oleg Gaidarenko)
586
587### Preset Changes
588* `WordPress`: add `requireBlocksOnNewLines` (Gary Jones)
589
590## Version [2.5.1](https://github.com/jscs-dev/node-jscs/compare/v2.5.0...v2.5.1) (11-06-2015):
591
592Just some bug fixes and an internal change before we integrate CST.
593
594### Fixes
595
596* `disallowUnusedParams`: ignore eval exressions (Oleg Gaidarenko)
597* `Configuration`: do not try to load presets with function values (Oleg Gaidarenko)
598* `requirePaddingNewLinesAfterBlocks` - don't throw on empty block (Oleg Gaidarenko)
599* `requireSpacesInGenerator` - account for named functions (Henry Zhu)
600
601### Internal changes
602
603* Add `Whitespace` token in preparation for using CST (Marat Dulin)
604
605## Version [2.5.0](https://github.com/jscs-dev/node-jscs/compare/v2.4.0...v2.5.0) (10-28-2015):
606
607### Preset Updates
608
609Thanks to markelog and Krinkle, the built-in wikimedia preset will be hosted at https://github.com/wikimedia/jscs-preset-wikimedia.
610
611The purpose of this change is so that organizations can update their preset as needed without waiting for JSCS to update to another minor version (even though we are releasing more often anyway). The plan is to not update our preset dependencies until a new minor version of JSCS.
612
613Example:
614
615```js
616// JSCS package.json
617"jscs-preset-wikimedia": "~1.0.0",
618```
619
620- Wikimedia updates their preset to to `1.1.0`
621- A new user runs `npm install` with jscs and will get version `1.0.0` of the wikimedia preset
622- If the user wants to update the preset themselves, they can add a direct dependency in their package.json
623- Otherwise they can wait for JSCS to have a minor version update (`2.4.0` to `2.5.0`) which will update all presets.
624
625If you would like to maintain one of the default supported presets, please let us [know](https://github.com/jscs-dev/node-jscs/issues/1811).
626
627### New Rules
628
629#### [`requireSpacesInGenerator`](http://jscs.info/rule/requireSpacesInGenerator) (stefania11)
630
631Checks the spacing around the `*` in a generator function.
632
633```js
634"requireSpacesInGenerator": {
635 "beforeStar": true,
636 "afterStar": true
637}
638```
639
640```js
641// allowed
642var x = function * () {};
643function * a() {};
644var x = async function * () {};
645```
646
647> Thanks to Stefania and Christopher for working on this rule this past Sunday during the JS Open Source workshop at the NY Javascript meetup!
648
649### New Rule Options
650
651#### [`requireCurlyBraces`](http://jscs.info/rule/requireCurlyBraces) (Henry Zhu)
652
653```js
654"requireCurlyBraces": {
655 "allExcept": ["return", "continue", "break", ...],
656 "keywords": ["if", "else", "for", "while", ... ]
657}
658```
659
660```js
661// allowed
662if (x) return;
663if (x) return 1;
664if (x) continue;
665if (x) break;
666
667// still not allowed
668if (x) i++;
669```
670
671#### [`requireSpaceAfterComma`](http://jscs.info/rule/requireSpaceAfterComma) add option `{ allExcept: ['trailing'] }` (Brian Dixon)
672
673```js
674// allows
675var a = [{
676 test: /\.jsx?$/,
677 exclude: /node_modules/,
678 loader: 'babel',
679}];
680```
681
682### Fixes
683
684#### Account for sparse arrays in comma spacing rules (Brian Dixon)
685
686- [`disallowSpaceBeforeComma`](http://jscs.info/rule/disallowSpaceBeforeComma), [`disallowSpaceAfterComma`](http://jscs.info/rule/disallowSpaceAfterComma)
687- [`disallowSpaceBeforeBinaryOperators`](http://jscs.info/rule/disallowSpaceBeforeBinaryOperators), [`disallowSpaceAfterBinaryOperators`](http://jscs.info/rule/disallowSpaceAfterBinaryOperators)
688
689```js
690// allowed
691var x = [1, , ,2];
692```
693
694#### Configuration: correct config dir detection (Oleg Gaidarenko)
695
696Fixes a regression with loading additional rules in a `.jscsrc`
697
698## Version [2.4.0](https://github.com/jscs-dev/node-jscs/compare/v2.3.5...v2.4.0) (10-22-2015):
699
700We're releasing pretty often now, right? :-)
701
702### `Fix` option
703
704- The `--fix` CLI flag can now be used programatically and [through](http://jscs.info/overview#fix) a `.jscsrc` config.
705
706> This is be useful for plugin authors (not only for jscs plugins but also for `grunt`/`gulp`/`etc...`)
707
708### Preset updates
709
710- The `jquery` preset (and dependant ones like `wordpress` and `wikimedia`) is less strict, whereas `idiomatic` is now more meticulous.
711
712### Couple new rules
713
714* [`disallowSpaceAfterComma`](http://jscs.info/rule/disallowSpaceAfterComma) - to have an opposite rule to [`disallowSpaceBeforeComma`](http://jscs.info/rule/disallowSpaceBeforeComma):
715
716```js
717[1,2,3] // valid
718[1, 2, 3] // invalid
719```
720
721* [`requireAlignedMultilineParams`](http://jscs.info/rule/requireAlignedMultilineParams) - a nice addition to our indentation rules:
722
723```js
724var test = function(one, two,
725/*indent!*/ three) {
726 ...
727};
728```
729
730### Some new rule options
731
732* [`requireDotNotation`](http://jscs.info/rule/requireDotNotation) now supports fancy letters like `π` -
733
734```js
735obj["ಠ_ಠ"] // This is wrong!
736obj.ಠ_ಠ // Now you get it :-)
737```
738
739* [`maxNumberOfLines`](http://jscs.info/rule/maxNumberOfLines) can now ignore comments with the `{"allExcept": ["comments"]}` option
740* [`requireObjectKeysOnNewLine`](http://jscs.info/rule/requireObjectKeysOnNewLine) can ignore object properties on the same line with `{"allExcept": ["sameLine"]}` option -
741```js
742var whatDoesAnimalsSay = {
743 cat: 'meow', dog: 'woof', fox: 'What does it say?' // this is cool now
744};
745```
746
747### Fixes
748
749* Account for bare blocks in both [`disallowNewlineBeforeBlockStatements`](http://jscs.info/rule/disallowNewlineBeforeBlockStatements) and [`disallowSpaceBeforeBlockStatements`](http://jscs.info/rule/disallowSpaceBeforeBlockStatements)
750
751```js
752// allows
753var a = 1;
754
755{
756 let b = 1;
757}
758```
759
760## Version [2.3.5](https://github.com/jscs-dev/node-jscs/compare/v2.3.4...v2.3.5) (10-19-2015):
761
762Why not fix some more bugs!
763
764### Bug fixes
765 * Fix: `requireSpacesInForStatement` account for parenthesizedExpression (Henry Zhu)
766
767```js
768// allows ()
769for (var i = 0; (!reachEnd && (i < elementsToMove)); i++) {
770```
771
772 * Fix: `disallowCommaBeforeLineBreak`: fix for function params (Henry Zhu)
773
774```js
775// allows
776function a(b, c) {
777 console.log('');
778}
779```
780
781 * Fix: `requirePaddingNewLineAfterVariableDeclaration` - allow exported declarations (Henry Zhu)
782
783```js
784// allows
785export var a = 1;
786export let a = 1;
787export const a = 1;
788```
789
790 * Fix: `disallowSpaceAfterKeywords` - fix issue with using default keyword list (Henry Zhu)
791
792```js
793// fixes autofix from `return obj` to `returnobj`
794```
795
796 * Fix: `disallowTrailingComma`, `requireTrailingComma` - support ObjectPattern and ArrayPattern (Henry Zhu)
797
798```js
799// disallow
800const { foo, bar } = baz;
801const [ foo, bar ] = baz;
802
803// require
804const { foo, bar, } = baz;
805const [ foo, bar, ] = baz;
806```
807
808hzoo
809
810## Version [2.3.4](https://github.com/jscs-dev/node-jscs/compare/v2.3.3...v2.3.4) (10-17-2015):
811
812### Bug fixes
813- Change `requireVarDeclFirst` to ignore let and const [`2199ca4`](https://github.com/jscs-dev/node-jscs/commit/2199ca488a56ff1472d876ac2b21fe2292ae8413) [`#1783`](https://github.com/jscs-dev/node-jscs/issues/1783)
814
815- Fixed an issue with all function spacing rules not accounting for the generators [`a2c009f`](https://github.com/jscs-dev/node-jscs/commit/a2c009f19aaf410a46abb3edfbc56d4aa9931f41) [`#1175`](https://github.com/jscs-dev/node-jscs/issues/1175)
816
817hzoo
818
819## Version [2.3.3](https://github.com/jscs-dev/node-jscs/compare/v2.3.2...v2.3.3) (10-16-2015):
820
821### Bug fixes
822- Fixed an error with `disallowUnusedParams` and es6 imports [`63526b7`](https://github.com/jscs-dev/node-jscs/commit/63526b73d55eed3719d79527a7a7c7490b4cd2cb) [`#1875`](https://github.com/jscs-dev/node-jscs/issues/1875)
823
824- Fixed an autofix issue with all function spacing rules and not accounting for the async keyword [`cf134a1`](https://github.com/jscs-dev/node-jscs/commit/cf134a12c1ab0bb7a23c7197780593bfdb8682e2) [`#1873`](https://github.com/jscs-dev/node-jscs/issues/1873)
825
826hzoo
827
828## Version [2.3.2](https://github.com/jscs-dev/node-jscs/compare/v2.3.1...v2.3.2) (10-14-2015):
829
830Fix an issue with `--extract` option being true by default
831
832## Version [2.3.1](https://github.com/jscs-dev/node-jscs/compare/v2.3.0...v2.3.1) (10-14-2015):
833
834A bunch of bug fixes in this release!
835
836### The Future
837
838We are probably going to start 3.0 for the next release (mainly integrating [CST](https://github.com/cst/cst) into JSCS). If you want to know more about CST check out the [previous changelog](https://github.com/jscs-dev/node-jscs/blob/master/CHANGELOG.md#-つ-_-つ--give-cst).
839
840Our current plan is to move our 3.0/cst branch to master and then create a 2.x branch to continue to release bug fixes / contributer PRs. The core team will be mainly focused on tackling issues on our [3.0 roadmap](https://github.com/jscs-dev/node-jscs/issues/1854) (which we are still planning). We would love to hear your feedback on what you think should be in 3.0 and beyond!
841
842### Bug fixes
843
844* [`disallowMultipleVarDecl`](http://jscs.info/rule/disallowMultipleVarDecl) - improve `{"allExcept": ["require"]}` logic (ValYouW)
845
846```js
847// Allow MemberExpressions: require('a').b.c;
848var fs = require('fs');
849var Emitter = require('events').EventEmitter;
850```
851
852* [`disallowSpaceAfterObjectKeys`](http://jscs.info/rule/disallowSpaceAfterObjectKeys) - Allow no space after key with `align` option. (Andrey Ermakov)
853
854
855```js
856// this should be allowed
857var f = {
858 "name": 1,
859 "x": 2
860};
861```
862
863* [`disallowUnusedParams`](http://jscs.info/rule/disallowUnusedParams) - correctly output unused param name (Oleg Gaidarenko)
864
865```js
866// Should output:
867// Param unusedParam is not used at input
868var a = function(unusedParam) {}
869```
870
871* [`requireDollarBeforejQueryAssignment`](http://jscs.info/rule/requireDollarBeforejQueryAssignment) - validate all keys (Brian Dixon)
872
873```js
874// check all keys
875var x = {
876 bar: 1,
877 foo: $(".foo") // error here
878};
879```
880
881* [`requireDollarBeforejQueryAssignment`](http://jscs.info/rule/requireDollarBeforejQueryAssignment) - Ignore array
882destructuring (Simen Bekkhus)
883
884```js
885// Don't error with this
886const [beep, boop] = meep;
887var $s = $("#id")
888```
889
890* `CLI` - "auto-configure" argument should always be at the end
891(Oleg Gaidarenko)
892
893```bash
894// correct autoconfigure args
895jscs --autoconfigure ./files/here
896```
897
898* `js-file` - make parser not confuse token types (Oleg Gaidarenko)
899
900```js
901// Fixes issues with keywords like with
902class A {
903 catch() {}
904}
905```
906
907Again, a big thanks to everything using [JSCS](jscs.info)! Definitely continue to report any bugs and new ideas! We always appreciate any help/PRs!
908
909We'll probably be moving more of the new rule/option issues to [`orphaned`](https://github.com/jscs-dev/node-jscs/issues?q=label%3Aorphaned+is%3Aclosed) which just means that they are on hold but anyone can still PR it or reopen it later. Remember to tweet at us at [@jscs_dev](https://twitter.com/jscs_dev) and chat with us on our [gitter room](https://gitter.im/jscs-dev/node-jscs)!
910
911hzoo
912
913## Version [2.3.0](https://github.com/jscs-dev/node-jscs/compare/v2.2.1...v2.3.0) (10-07-2015):
914
915A quick update! A few more rules, preset updates, and bug fixes!
916
917> If anyone missed it from the previous minor release, we've been working on https://github.com/cst/cst. This will help us continue to autofix more complex rules in the future. If you want to know more about it check out the [changelog](https://github.com/jscs-dev/node-jscs/blob/master/CHANGELOG.md#-つ-_-つ--give-cst).
918
919Now that we're done implementing all of ES6 the next major thing we'll be working on is intergrating CST into JSCS.
920
921### New Rules:
922
923#### [`disallowIdenticalDestructuringNames`](http://jscs.info/rule/disallowIdenticalDestructuringNames) (ES6) (Henry Zhu)
924
925```js
926// Valid for "disallowIdenticalDestructuringNames": true
927var {left, top} = obj; // shorthand
928var {left, top: topper} = obj; // different identifier
929let { [key]: key } = obj; // computed property
930```
931
932```js
933// Invalid for "disallowIdenticalDestructuringNames": true
934var {left: left, top: top} = obj;
935```
936
937#### [`disallowNestedTernaries`](http://jscs.info/rule/disallowNestedTernaries) (Brian Dixon)
938
939```js
940// Valid for "disallowNestedTernaries": "true"
941// Valid for "disallowNestedTernaries": { "maxLevel": 0 }
942var foo = (a === b) ? 1 : 2;
943```
944
945```js
946// Invalid for "disallowNestedTernaries": true
947// Valid for "disallowNestedTernaries": { "maxLevel": 0 }
948var foo = (a === b)
949 ? (a === c)
950 ? 1
951 : 2
952 : (b === c)
953 ? 3
954 : 4;
955```
956
957
958#### [`requireSpaceAfterComma`](http://jscs.info/rule/requireSpaceAfterComma) (Brian Dixon)
959
960> To match [requireSpaceBeforeComma](http://jscs.info/rule/requireSpaceBeforeComma)
961
962```js
963// Valid for "requireSpaceAfterComma": true
964var a, b;
965```
966
967```js
968// Invalid for "requireSpaceAfterComma": true
969var a,b;
970```
971
972
973### Preset Updates:
974
975- Preset: add more comma rules to jquery and airbnb presets (Oleg Gaidarenko) [`94f175e`](https://github.com/jscs-dev/node-jscs/commit/94f175eec822f62528e6e5ca5aab0eb1de037243)
976- Preset: `wordpress` - change `requireCamelCaseOrUpperCaseIdentifiers` from `true` to `ignoreProperties` [`58ba037`](https://github.com/jscs-dev/node-jscs/commit/58ba030744e8c7e55fa40a08bf19e89fc93a7eed)
977
978### Bug fixes
979
980- Fix: `disallowParenthesesAroundArrowParam` - account for non-identifiers (`RestElement`, `ArrayPattern`) correctly (Henry Zhu) [`bcfaa51`](https://github.com/jscs-dev/node-jscs/commit/bcfaa5192b09391bdec31adecab14d3861817c8a) [#1831](https://github.com/jscs-dev/node-jscs/issues/1831)
981- Fix: `disallowCommaBeforeLineBreak` correctly handle empty object (Oleg Gaidarenko)
982[`6571ebb`](https://github.com/jscs-dev/node-jscs/commit/6571ebbbf29e5b96be45ade585e4676de3c2817d) [#1841](https://github.com/jscs-dev/node-jscs/issues/1841)
983
984Again, a big thanks to everything using JSCS! Definitely continue to report any bugs and new ideas! We always appreciate any help/PRs as we don't have that many resources!
985
986hzoo
987
988### Other
989
990 * disallowDanglingUnderscores: correct documentation (Oleg Gaidarenko)
991 * Docs: `disallowMultipleVarDecl` typo (ValYouW)
992 * Docs: couple small fixes (Oleg Gaidarenko)
993 * Internal: `Checker` - return correct arguments for excluded files (Oleg Gaidarenko)
994 * Misc: remove babelType and just use node.type (Henry Zhu)
995 * Misc: Update CHANGELOG.md (Craig Klementowski)
996 * Misc: Use Chai (Marat Dulin)
997
998## Version [2.2.1](https://github.com/jscs-dev/node-jscs/compare/v2.2.0...v2.2.1) (09-29-2015):
999
1000#### Bug fix:es
1001
1002Quick fix related to checker not returning correctly with excluded files.
1003
1004- [`f12830a`](https://github.com/jscs-dev/node-jscs/commit/f12830a469959f3543c51bfc632fe37292ea6d09) [#1816](https://github.com/jscs-dev/node-jscs/issues/1816)
1005 - Internal: `Checker` - return correct arguments for excluded files ([markelog](https://github.com/markelog))
1006
1007## Version [2.2.0](https://github.com/jscs-dev/node-jscs/compare/v2.1.1...v2.2.0) (09-28-2015):
1008
1009Again, it's been way too long since the last version; we're going to be releasing more often in the future!
1010
1011In this release, we have a nicer [homepage](http://jscs.info/), 5 new rules, 4 more autofixable rules, many new rule options/bug fixes, and a [jscs-jsdoc@1.2.0](https://github.com/jscs-dev/jscs-jsdoc/blob/master/CHANGELOG.md#v120---2015-09-22) update.
1012
1013We also added support for using YAML in config files, checking JS style in HTML files, and are **trying out some non-stylistic rules** (like [`disallowUnusedParams`](http://jscs.info/rule/disallowUnusedParams))!
1014
1015Be on the look out for https://github.com/cst/cst (just finished ES6 support this weekend) if you haven't already.
1016
1017### Autofixing: Support for 4 more rules!
1018
1019Thanks to [@markelog](https://github.com/markelog), we also have autofix support for the following rules:
1020
1021- [`disallowSemicolons`](http://jscs.info/rule/disallowSemicolons)
1022- [`requireSemicolons`](http://jscs.info/rule/requireSemicolons)
1023- [`disallowQuotedKeysInObjects`](http://jscs.info/rule/disallowQuotedKeysInObjects)
1024- [`requireCapitalizedComments`](http://jscs.info/rule/requireCapitalizedComments)
1025
1026> We will also be labeling which rules don't support autofixing (only a few).
1027
1028### Configuration: YAML support, and linting JS in HTML files
1029
1030We weren't even thinking about different config formats, but [@ronkorving](https://github.com/ronkorving) stepped in and added support for using YAML as a config format!
1031
1032So now you can use a `.jscsrc / jscs.json` (JSON) file or a `.jscs.yaml` (YAML) file.
1033
1034[@lahmatiy](https://github.com/lahmatiy) has landed support for linting javascript in HTML files with the [extract](http://jscs.info/overview#extract) option! Thanks so much for sticking with us for that PR.
1035
1036Example usage:
1037```
1038jscs ./hello.html --extract *.html
1039```
1040
1041### New Rules
1042
1043#### [`disallowMultiLineTernary`](http://jscs.info/rule/disallowMultiLineTernary) (Brian Dixon)
1044
1045```js
1046// Valid for "disallowMultiLineTernary": true
1047var foo = (a === b) ? 1 : 2;
1048```
1049
1050#### [`requireMultiLineTernary`](http://jscs.info/rule/requireMultiLineTernary) (Brian Dixon)
1051
1052```js
1053// Valid for "requireMultiLineTernary": true
1054var foo = (a === b)
1055 ? 1
1056 : 2;
1057```
1058
1059#### [`disallowTabs`](http://jscs.info/rule/disallowTabs) (Mike Ottum)
1060
1061It disallows tab characters everywhere!
1062
1063#### [`disallowUnusedParams`](http://jscs.info/rule/disallowUnusedParams) (Oleg Gaidarenko)
1064
1065Another cool rule [@markelog](https://github.com/markelog) added is actually a non-stylistic rule with autofixing support! It checks to make sure you use the parameters in function declarations and function expressions!
1066
1067
1068```js
1069// Invalid since test is unused
1070function x(test) {
1071}
1072var x = function(test) {
1073}
1074```
1075
1076#### [`validateCommentPosition`](http://jscs.info/rule/validateCommentPosition) (Brian Dixon)
1077
1078Comments that start with keywords like `eslint, jscs, jshint` are ignored by default.
1079
1080```js
1081/* Valid for "validateCommentPosition": { position: `above`, allExcept: [`pragma`] } */
1082// This is a valid comment
10831 + 1; // pragma (this comment is fine)
1084
1085/* Valid for "validateCommentPosition": { position: `beside` } */
10861 + 1; // This is a valid comment
1087```
1088
1089Just as a reminder, you can disable certain AST node types with the [`disallowNodeTypes`](http://jscs.info/rule/disallowNodeTypes.html) rule which takes in an array of node types.
1090
1091For example: if you want to disable arrow functions for some reason, you could do
1092
1093`"disallowNodeTypes": ['ArrowFunctionExpression']`.
1094
1095### Presets: Idiomatic.js and other updates
1096
1097We finally added support for [Idiomatic.js](https://github.com/rwaldron/idiomatic.js)! There are a few more rules we still need to add, so leave a comment in the [issue](https://github.com/jscs-dev/node-jscs/issues/1065) or create a new one.
1098
1099* `Google`: remove `capitalizedNativeCase` option in the JSDoc `checkTypes` rule (Sam Thorogood)
1100* `Idiomatic`: add initial preset (Henry Zhu)
1101* `jQuery`: add `disallowSpacesInCallExpression` rule to (Oleg Gaidarenko)
1102* `jQuery`: use `ignoreIfInTheMiddle` value for `requireCapitalizedComments` rule (Oleg Gaidarenko)
1103* `jQuery`: add `validateIndentation` rule (Oleg Gaidarenko)
1104* `Wikimedia`: enable `es3` (James Forrester)
1105
1106### Rule Options/Changes
1107
1108* `requireSpacesInsideParentheses`: `ignoreParenthesizedExpression` option (Oleg Gaidarenko)
1109* `disallowSpaceAfterObjectKeys`: add `method` exception option (Alexander Zeilmann)
1110* `disallowSpaceBeforeSemicolon`: add `allExcept` option (Oleg Gaidarenko)
1111* `requireCapitalizedComments`: add `ignoreIfInTheMiddle` option (Oleg Gaidarenko)
1112* `disallowSpacesInsideParentheses`: add quotes option (Oleg Gaidarenko)
1113* `requireSpacesInsideParentheses`: add quotes option (Oleg Gaidarenko)
1114* `requireCapitalizedComments`: add default exceptions (alawatthe)
1115* `requireArrowFunctions`: create an error on function bind (Henry Zhu)
1116* Misc: Bucket all rules into groups, test case to ensure new rules have a group (indexzero)
1117
1118### Bug fixes
1119
1120We fixed a bug with exit codes not matching the [wiki](https://github.com/jscs-dev/node-jscs/wiki/Exit-codes) (Oleg Gaidarenko).
1121
1122* `disallowParenthesesAroundArrowParam`: fix check for params (Henry Zhu)
1123* `spacesInsideBrackets`: account for block comments (Oleg Gaidarenko)
1124* `disallowSemicolons`: ignore needed exceptions (Oleg Gaidarenko)
1125* `spacesInFunctionExpression`: account for async functions (MikeMac)
1126* `disallowSpaceBeforeSemicolon`: do not trigger error if it's first token (Oleg Gaidarenko)
1127* `requireCapitalizedComments`: consider edge cases (Oleg Gaidarenko)
1128* `requireSemicolons`: handle phantom cases (Oleg Gaidarenko)
1129* `spaceAfterObjectKeys`: fix for computed properties with more than one token (Henry Zhu)
1130* Exclude `.git` folder by default (Vladimir Starkov)
1131
1132### JSDoc updates
1133* New Rule: [`checkParamExistence`](http://jscs.info/rule/jsDoc#checkparamexistence)
1134* New Rule: [`requireReturnDescription`](http://jscs.info/rule/jsDoc#requirereturndescription)
1135* [`enforceExistence`](http://jscs.info/rule/jsDoc#enforceexistence) add `paramless-procedures` exception
1136
1137### What's JSCS?
1138
1139The homepage now showcases what JSCS actually does. We were missing a :cat: picture as well so ...
1140
1141![cat](http://i.imgur.com/sIIoLDI.png)
1142
1143> If you have any feedback on the site, leave a comment at our [website repo](https://github.com/jscs-dev/jscs-dev.github.io).
1144
1145### ༼ つ ◕_◕ ༽つ GIVE CST!
1146
1147We've also been busy working on https://github.com/cst/cst.
1148
1149![cst](https://raw.githubusercontent.com/cst/cst/master/docs/cst-example.png)
1150
1151CST stands for `Concrete Syntax Tree`, as opposed to AST which stands for `Abstract Syntax Tree`. CST uses a regular AST but adds support for information that you normally don't care about but is vital for a style checker, e.g. spaces, newlines, comments, semicolons, etc. Using a CST will allow us to support more complex autofixing such as adding curly braces while retaining other formatting or much larger transformations.
1152
1153We just finished supporting all of ES6 this past weekend. [ES6+](https://github.com/cst/cst/issues/39) and [JSX](https://github.com/cst/cst/issues/3) support is also in progress! We'll be integrating CST into JSCS in the [3.0 branch](https://github.com/jscs-dev/node-jscs/tree/3.0), so look out for that soon (CST uses babel as its AST parser).
1154
1155If you're interested, there was a lot of discussion on CSTs at the [ESTree](https://github.com/estree/estree/issues/41) repo.
1156
1157---
1158
1159Hopefully we can get more community help for JSCS! (check out [CONTRIBUTING.md](https://github.com/jscs-dev/node-jscs/blob/master/CONTRIBUTING.md#how-you-can-help) if you're interested)
1160
1161We have a [`beginner-friendly`](https://github.com/jscs-dev/node-jscs/labels/beginner-friendly) tag for people to get started on issues.
1162
1163### Small personal sidenote
1164
1165Thanks to everyone who has been submitting issues/PRs!
1166
1167It's been almost a year since I (hzoo) really started contributing to open source. It's still crazy to me that my first pull request was just adding the [table of contents](https://github.com/jscs-dev/node-jscs/pull/677). I was so excited to contribute that day!
1168
1169Little did I know I would slowly do more and more - typo fixes, docs changes, bugfixes, rules, and then eventually become part of the team! I've become a better communicator and become more confident to give and take constructive feedback. I'm currently still figuring out how to review PRs, label issues, do changelogs (like right now), release, etc.
1170
1171So much has happened after starting that one simple contribution! Even though I know a lot more about ASTs, javascript/node, and programming style, it all adds up to much more than that technical knowledge.
1172
1173Contributing here helped me make PRs to a lot of other projects (in my case babel, eslint, and others). I understand more that it doesn't take a special person to start helping out. I really hope to encourage others to join our awesome open source community at large!
1174
1175[hzoo](https://github.com/hzoo)
1176
1177### Other Awesome Changes!
1178
1179* CLI: correct `describe` description (Roman Dvornov)
1180* ClI: move `handleMaxErrors` helper to the more appropriate place (Oleg Gaidarenko)
1181* CLI: set `maxErrors` to `Infinity` for autoconfigure (Henry Zhu)
1182* disallowSemicolons: simplify `disallowSemicolons` rule (Oleg Gaidarenko)
1183* Docs: another portion of changelog fixes (Oleg Gaidarenko)
1184* Docs: Correct documentation for `requireCapitalizedComments` (Alexander Zeilmann)
1185* Docs: `disallowParenthesesAroundArrowParam` (Samuel Lindblom)
1186* Docs: fix markdown for `disallowMultipleSpaces` (Marián Rusnák)
1187* Docs: fix markdown in `requireBlocksOnNewline` (Marián Rusnák)
1188* Docs: fix markdown in `requireCapitalizedComments` (Marián Rusnák)
1189* Docs: fixup broken links (Henry Zhu)
1190* Docs: improve documentation for various rules (oredi)
1191* Docs: improve documentation for various rules (oredi)
1192* Docs: remove unnecessary paragraph, use js syntax highlighting (Dennis Wissel)
1193* Docs: small changelog corrections (Oleg Gaidarenko)
1194* Docs: small correction for the `disallowEmptyBlocks` rule (Oleg Gaidarenko)
1195* js-file: add `getScope` method (Oleg Gaidarenko)
1196* js-file: add `removeToken` method (Oleg Gaidarenko)
1197* js-file: all return values should be consistent (Oleg Gaidarenko)
1198* js-file: check argument of the `file#getNodeRange` (Oleg Gaidarenko)
1199* js-file: do not interpret html as grit instructions (Oleg Gaidarenko)
1200* js-file: make grit regexp case-insensitive (Oleg Gaidarenko)
1201* Misc: add `only` property to `reportAndFix` assert helper (Oleg Gaidarenko)
1202* Misc: make jslint happy (Oleg Gaidarenko)
1203* Misc: make lint happy (Oleg Gaidarenko)
1204* Misc: use node "4" instead of node "4.0" in travis (Henry Zhu)
1205* Misc: correct code style violations (Oleg Gaidarenko)
1206* Misc: add node 4.0 to travis (Henry Zhu)
1207* Misc: autofix tests for rules that are not supported by default presets (Oleg Gaidarenko)
1208* Misc: change default mocha reporter (Oleg Gaidarenko)
1209* Misc: disable duplicative jshint check for semicolons (Oleg Gaidarenko)
1210* Misc: do not show console.error at the test run (Oleg Gaidarenko)
1211* Misc: increase coverage and use console.error for maxError output (Oleg Gaidarenko)
1212* Misc: increase rules coverage (Oleg Gaidarenko)
1213* Misc: use full lodash package (Oleg Gaidarenko)
1214* Misc: add `requireSemicolons` rule to our jscsrc (Oleg Gaidarenko)
1215* `requireCapitalizedComments`: remove merge artefacts (Oleg Gaidarenko)
1216* `*Semicolons`: increase coverage (Oleg Gaidarenko)
1217* String-checker: pass `file` instance to `_fix` method (Oleg Gaidarenko)
1218* Strip `BOM` from config files (Jonathan Wilsson)
1219* Support `null` and `-1` values for `maxErrors` option (Daniel Anechitoaie)
1220* Tests: improve `reportAndFix` assertion helper (Oleg Gaidarenko)
1221* Utils: add `isPragma` method (Brian Dixon)
1222
1223## Version [2.1.1](https://github.com/jscs-dev/node-jscs/compare/v2.1.0...v2.1.1)
1224
1225### Overview
1226
1227This release consists mostly of bug-fixes. Check them out – there are a lot of them!
1228
1229We also managed to squeeze two new rules - [requireSpacesInsideParenthesizedExpression](http://jscs.info/rule/requireSpacesInsideParenthesizedExpression.html) and [disallowSpacesInsideParenthesizedExpression](http://jscs.info/rule/disallowSpacesInsideParenthesizedExpression.html), increase performance, and improve ES6 support.
1230
1231#### Fix regarding global jscs installs and plugins
1232
1233One of the biggest issues fixed: a **global** jscs install can finally load **local** extensions (à la gulp style) like error-filters, plugins, additional rules, and presets.
1234
1235This will fix issues with using a custom preset with something like [SublimeLinter](https://packagecontrol.io/packages/SublimeLinter-jscs) which uses the global jscs install.
1236
1237- To make a custom preset, you need to publish a npm package with a jscs config file
1238- We recommend the package name starts with `jscs-preset-` or with `jscs-config-` to help with searching for presets on npm and defining it in your config
1239- This would allow you to specify your preset more succinctly: `”preset”: “awesome”` instead of `”preset”: “jscs-preset-awesome”`
1240- You can also share multiple presets in one package with `”preset”: “awesome/super-awesome”`, provided that you have `super-awesome.{json, js}` in your package root directory
1241- Create a `jscs.json` file to store your jscs config
1242- In your `package.json`, set the `main` field to `jscs.json`
1243
1244```js
1245// example package.json in `jscs-config-awesome`
1246{
1247 “name”: “jscs-config-awesome”,
1248 “version”: “1.0.0”,
1249 “main”: “jscs.json”
1250}
1251
1252// example .jscsrc using a custom preset
1253// assuming the preset package name is `jscs-config-awesome`
1254{
1255 “preset”: “awesome”,
1256 “disallowEmptyBlocks”: false // example of disabling a preset rule with false
1257}
1258```
1259
1260We will add more comprehensive documentation for this feature a bit later, so stay tuned.
1261
1262#### Disable a rule with `false` or `null`
1263
1264You can use `false` (instead of only `null`) to disable a rule (such as in a preset). This was a point of confusion for newer users. To disable a rule you can do:
1265
1266```js
1267{
1268 “preset”: “airbnb”,
1269 “disallowEmptyBlocks”: null // disabling a rule with null
1270 “disallowSpacesInCallExpression”: false // disabling a rule with false
1271}
1272```
1273
1274### New Rules
1275* New Rule: SpacesInsideParenthesizedExpression (Richard Gibson)
1276
1277### Enhancements
1278* Configuration: disable any rule if its value equals to "false” (Oleg Gaidarenko)
1279
1280### Bug fixes
1281* requireDollarBeforejQueryAssignment: Ignore destructuring assignment (Simen Bekkhus)
1282* validateIdentation: fix on empty switch blocks (Henry Zhu)
1283* disallowQuotedKeysInObjects: fix allowing quoted non-reserved keys (Alexej Yaroshevich)
1284* disallowParenthesesAroundArrowParam: allow destructuring of param (Henry Zhu)
1285* requireTrailingComma: correct error message (monk-time)
1286* requirePaddingNewLinesAfterBlocks: do not report arrow fn chaining (Oleg Gaidarenko)
1287* safeContextKeyword: miss destructuring assignment (Oleg Gaidarenko)
1288* disallowNodeTypes: correct configure error (Alexander Zeilmann)
1289* requireDollarBeforejQueryAssignment: Ignore destructuring assignment (Simen Bekkhus)
1290* paddingNewlinesInBlocks: add exceptions and open/close options (Kai Cataldo)
1291* requireSpacesInAnonymousFunctionExpression: add allExcept option (Ken Sheedlo)
1292* curlyBraces: support `for..of` statements (regseb)
1293
1294### Misc
1295* Configuration: allow load of external entities from external preset (Oleg Gaidarenko)
1296* CLI:Configuration: load local jscs modules if present (Oleg Gaidarenko)
1297* JsFile: Improve getNodeByRange performance (Richard Gibson)
1298* disallowQuotedKeysInObjects: rework tests and deprecate allButReserved value (Alexej Yaroshevich)
1299
1300### Docs
1301* Docs: update examples on how to disable (Oleg Gaidarenko)
1302* Docs: improve documentation for various rules (oredi)
1303* Docs: fix typos in examples for disallowSpaceAfterObjectKeys (Yoni Medoff)
1304* Docs: improve documentation for various rules (oredi)
1305* Docs: small changelog corrections (Oleg Gaidarenko)
1306* Docs: make it clearer node_modules is excluded, and ! can be used to include (Henry Zhu)
1307
1308## Version [2.1.0](https://github.com/jscs-dev/node-jscs/compare/v2.0.0...v2.1.0)
1309
1310### Overview
1311In this release, we added three more rules: two of them are ES6-only, they "protect" you
1312from the downside of arrow functions (see [1](http://jscs.info/rule/disallowArrowFunctions.html) and [2](http://jscs.info/rule/disallowShorthandArrowFunctions.html) for an explanation of why you might want to enable them) and another universal one if you [like](http://jscs.info/rule/validateOrderInObjectKeys.html) to keep your object neat and tidy.
1313
1314Airbnb, jQuery, and Wordpress presets are now using some of the new rules we added in the previous release. Whereas, the wikimedia preset is now less strict for [JSDoc](http://jscs.info/rule/jsDoc.html) comments.
1315
1316This release also includes a JSON reporter, lots of bug fixes and enhancements, plus couple new rule values for your linting pleasure.
1317
1318### Presets
1319* Preset: define exclusions for wordpress preset (Weston Ruter)
1320* Preset: add couple new rules to airbnb preset (Christophe Hurpeau)
1321* Preset: Set jsDoc.checkTypes to "strictNativeCase" for Wikimedia (Timo Tijhof)
1322* Preset: add "disallowSpaceBeforeComma" rule to jquery preset (Oleg Gaidarenko)
1323
1324### New rules
1325* New Rule: disallowShorthandArrowFunctions (Jackson Ray Hamilton)
1326* New Rule: disallowArrowFunctions (Jackson Ray Hamilton)
1327* New Rule: validateOrderInObjectKeys (Rui Marinho)
1328
1329### New rule values
1330* disallowEmptyBlocks: allow blocks with comments (Michael Robinson)
1331* requirePaddingNewlinesAfterUseStrict: allow immediate "require" (Michael Robinson)
1332* requireAnonymousFunctions: Add exception for function declarations (Kai Cataldo)
1333* requireBlocksOnNewline: Add object option to handle comments (oredi)
1334* requireTemplateString: string and template string concatentation support (Michelle Bu)
1335
1336### Enhancements
1337* Configuration: allow load configs with ".jscsrc" extension (Oleg Gaidarenko)
1338* Reporters: add new JSON reporter (Roman Blanco)
1339* Configuration: extend and improve default value of array options (Oleg Gaidarenko)
1340* SpaceBeforeObject(Keys|Values): support spread in object literals (Ronn Ross)
1341* SpacesInAnonymousFunctionExpression: consider ES6 "constructor" method (Oleg Gaidarenko)
1342* validateIndentation: reduce RegExp create count (optimization) (Roman Dvornov)
1343* validateAlignedFunctionParameters: small simplification (Oleg Gaidarenko)
1344* disallowEmptyBlocks: should not report empty arrow blocks (Jake Zatecky)
1345* validateAlignedFunctionParameters: account for arrow functions (Jake Zatecky)
1346* requirePaddingNewlinesAfterBlocks: ignore parentheses of last item (Christophe Hurpeau)
1347
1348### Bugs
1349* requireMatchingFunctionName: fix critical bug and add tests (Alexej Yaroshevich)
1350* disallowSpacesInCallExpression: report only on a node's round brace (Joel Kemp)
1351* disallowSpacesInCallExpression: consider fitting parentheses case (Oleg Gaidarenko)
1352* CLI: correct reporter error (Roman Dvornov)
1353* SpacesIn*: fix for shorthand methods/class methods, update tests (Henry Zhu)
1354* requireAlignedObjectValues: fix computed keys with MemberExpressions (Henry Zhu)
1355* requireParenthesesAroundArrowParam: account for a single rest parameter (Henry Zhu)
1356* requirePaddingNewLinesBeforeLineComments: fix for newlines above comment (Henry Zhu)
1357
1358### Docs
1359* Docs: Fix a typo in requireVarDeclFirst (Chayoung You)
1360* Docs: point to jscs.info for the list of maintainers (Oleg Gaidarenko)
1361* Docs: improve preset documentation (Oleg Gaidarenko)
1362* Docs: Fix typos in requireCapitalizedComments (Chayoung You)
1363* Docs: Fix a typo in maximumNumberOfLines (Chayoung You)
1364* Docs: Add justifications for arrow function rules (Jackson Ray Hamilton)
1365* Docs: correct docs for the" disallowNodeTypes" rule (Dmitry Semigradsky)
1366* Docs: Fixed typo, update link for clarity/correct URL (Kai Cataldo)
1367* Docs: Fixed typo in disallowSpaceAfterObjectKeys (Brian Ng)
1368* Docs: use correct links to new rules (Pavel Zubkou)
1369* Docs: bring back coveralls badge (Oleg Gaidarenko)
1370* Docs: Error 404 on the requireObjectKeysOnNewLine link (Roman Nuritdinov)
1371* Docs: Link to built-in JSCS plugin for JetBrains IDEs (Simen Bekkhus)
1372* Docs: improve and correct the changelog (Oleg Gaidarenko)
1373* Docs: small example improvement for "disallowSpaceBeforeComma" rule (Oleg Gaidarenko)
1374
1375### Misc
1376* requireLineFeedAtFileEnd: Test to ensure IIFE case still reports (Joel Kemp)
1377* Misc: add Henry to list of maintainers (Oleg Gaidarenko)
1378* Misc: make jshint happy (Oleg Gaidarenko)
1379* Misc: exclude only problematic module from coverage (Oleg Gaidarenko)
1380* Misc: once again hide coverage status (Oleg Gaidarenko)
1381* Misc: correct merge artefact (Oleg Gaidarenko)
1382* Misc: support spread in object literals (Henry Zhu)
1383* Misc: update Esprima to 2.5.0 (Henry Zhu)
1384* Misc: cache `node_modules` dir in travis CI (Oleg Gaidarenko)
1385* AutoConfigure: Tests now depend on a preset clone (Joel Kemp)
1386* Revert "Changelog: use conventional-change..." (Oleg Gaidarenko)
1387* Changelog: use conventional-changelog and conventional-github-releaser (Steve Mao)
1388
1389## Version [2.0.0](https://github.com/jscs-dev/node-jscs/compare/v1.13.1...v2.0.0)
1390
1391### Overview
1392
1393Gosh! We haven’t released a new version in more than two months! What have we done all this time?
1394Well, we were working hard on the next big step - 2.0!
1395
1396And we’re finally ready to show it to you. We’ve improved JSCS all over the place!
1397
1398### `esnext`
1399It was a big pain to check ES6/JSX code with JSCS, since you had to install special extensions or different parsers. Well, no more of that! Thanks to all the hard work of the @hzoo, now you can just write `"esnext": true` in your config or execute JSCS from the CLI with the `--esnext` flag.
1400Now all that new fancy code will be examined without any hassle, as [decorators](https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841), [function bind (::)](https://github.com/zenparsing/es-function-bind) operator, and all valid babel code can be checked by JSCS.
1401
1402We also added seven ES6-only rules; see below for more information.
1403
1404### Autofixing
1405We really want to support autofixing for as many rules as possible. But as it turns out, we are at forefront of this problem; it’s really hard to change the code without affecting unrelated instructions.
1406
1407What we need is a [Concrete Syntax Tree](https://en.wikipedia.org/wiki/Parse_tree), instead of the [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) + tokens structures that we use now. Unfortunately, there is no CST standard for JavaScript at the moment – this is why we decided to step up and come up with our vision of a CST - https://github.com/mdevils/cst. Currently, we are working with the [estree](https://github.com/estree/estree/issues/41) team on this proposal – hoping the development of this crucial part of JavaScript parsing will move faster.
1408
1409Meanwhile, using some workarounds and hacks, we managed to support autofixing for 4 more rules:
1410
1411* [requireTrailingComma](http://jscs.info/rule/requireTrailingComma.html)
1412* [disallowTrailingComma](http://jscs.info/rule/disallowTrailingComma.html)
1413* [disallowTrallingWhitespace](http://jscs.info/rule/disallowTrailingWhitespace.html)
1414* [validateQuoteMarks](http://jscs.info/rule/validateQuoteMarks.html)
1415
1416### New rules
1417There are 31 new rules, including 16 rules for JSDoc [validation](http://jscs.info/rule/jsDoc.html), and 7 ES6-only rules:
1418
1419* [requireSpaceBeforeComma](http://jscs.info/rule/requireSpaceBeforeComma.html)
1420Require spaces before commas
1421* [disallowSpaceBeforeComma](http://jscs.info/rule/disallowSpaceBeforeComma.html)
1422Disallow spaces before commas
1423* [requireVarDeclFirst](http://jscs.info/rule/requireVarDeclFirst.html)
1424Requires `var` declaration to be on the top of an enclosing scope
1425* [disallowSpaceBeforeSemicolon](http://jscs.info/rule/disallowSpaceBeforeSemicolon.html)
1426Disallows spaces before semicolons.
1427* [requireMatchingFunctionName](http://jscs.info/rule/requireMatchingFunctionName.html)
1428Requires function names to match member and property names.
1429* [disallowNodeTypes](http://jscs.info/rule/disallowNodeTypes.html)
1430Disallow use of certain [node types](https://github.com/jquery/esprima/blob/758196a1c5dd20c3ead6300283a1112428bc7045/esprima.js#L108-L169) (from Esprima/ESTree).
1431* [requireObjectKeysOnNewLine](http://jscs.info/rule/requireObjectKeysOnNewLine.html)
1432Requires placing object keys on new line
1433* [disallowObjectKeysOnNewLine](http://jscs.info/rule/disallowObjectKeysOnNewLine.html)
1434Disallows placing object keys on new line
1435
1436#### New ES6-only rules
1437* [disallowParenthesesAroundArrowParam](http://jscs.info/rule/disallowParenthesesAroundArrowParam.html)
1438Disallows parentheses around arrow function expressions with a single parameter.
1439* [requireArrowFunctions](http://jscs.info/rule/requireArrowFunctions.html)
1440Requires that arrow functions are used instead of anonymous function expressions in callbacks.
1441* [requireNumericLiterals](http://jscs.info/rule/requireNumericLiterals.html)
1442Requires use of binary, hexadecimal, and octal literals instead of `parseInt`.
1443* [requireParenthesesAroundArrowParam](http://jscs.info/rule/requireParenthesesAroundArrowParam.html)
1444Requires parentheses around arrow function expressions with a single parameter.
1445* [requireShorthandArrowFunctions](http://jscs.info/rule/requireShorthandArrowFunctions.html)
1446Require arrow functions to use an expression body when returning a single statement
1447* [requireSpread](http://jscs.info/rule/requireSpread.html)
1448Disallows using `.apply` in favor of the spread operator
1449* [requireTemplateStrings](http://jscs.info/rule/requireTemplateStrings.html)
1450Requires the use of template strings instead of string concatenation.
1451
1452There are also a lot of new rule values (see the ["Changelog"](#changelog) section) which makes a lot of rules more flexible.
1453
1454We also added new rules and values to some presets. If you feel that we’ve missed something, don't be quiet! Send us a PR and we will surely add the needed rules to your favorite preset.
1455
1456### Simplified inclusion of plugins, presets, and custom rules
1457Since every possible JSCS extension can now be loaded without defining its full path, it is enough to just specify the needed dependency to your project so it can be found by JSCS.
1458
1459```js
1460{
1461 "plugins": ["./your-local-package"], // Same with `additionalRules` and `preset` options
1462 "plugins": ["jscs-your-npm-package"],
1463 "plugins": ["your-npm-package"], // can omit “jscs-” prefix if you want
1464}
1465```
1466
1467### Other
1468* Support for disabling rules on a [single line](http://jscs.info/overview.html#disabling-specific-rules-for-a-single-line) -
1469```js
1470if (x) y(); // jscs:ignore requireCurlyBraces
1471if (z) a(); // will show the error with `requireCurlyBraces`
1472```
1473
1474* Two new reporters - `summary` (could be very helpful to acquire full overview of all possible errors in your project) and `unix`. You could enable them by providing [`--reporter=<reporter name>`](http://jscs.info/overview.html#-reporter-r) flag.
1475
1476* `node_modules` path is included by default to [`excludeFiles`](http://jscs.info/overview.html#excludefiles)
1477
1478* For every possible error, like missing or corrupted config, JSCS now provides [different](https://github.com/jscs-dev/node-jscs/wiki/Exit-codes) exit-codes. We believe it might be useful for piping, editors plugins, etc.
1479
1480* JSCS (like any good unix program) now obeys the [rule of silence](http://www.linfo.org/rule_of_silence.html).
1481
1482And of course, a lot of bug-fixes, improved ES6 support of existing rules, docs, infrastructure changes, etc.
1483
1484Although this is major version, we didn't remove deprecated rule values or changed config format, we expecting to do this in the 3.0 version while switching to CST and fully refactor JSCS code-base.
1485
1486### Changelog
1487
1488Backward incompatible changes
1489* Utils: remove comma from list of binary operators (Oleg Gaidarenko)
1490* Checker: remove deprecated constructor options (Oleg Gaidarenko)
1491* Obey the Rule of Silence (Feross Aboukhadijeh)
1492* Configuration: add ability to load external presets (Oleg Gaidarenko)
1493* Configuration: small corrections to JSDoc of "node-configuration" module (Oleg Gaidarenko)
1494* Configuration: small refactoring of the configuration module (Oleg Gaidarenko)
1495* Configuration: allow "getReporter" method to require node modules (Oleg Gaidarenko)
1496* Configuration: initial pass on the polymorphic require (Oleg Gaidarenko)
1497* Checker: more API changes for 2.0 (Oleg Gaidarenko)
1498* CLI: Differentiate exit codes (Oleg Gaidarenko)
1499* Misc: set default value of maxErrors option to 50 (Oleg Gaidarenko)
1500* yodaConditions: remove comparison operators from default set (Oleg Gaidarenko)
1501* Misc: remove all deprecated rules/tests (Henry Zhu)
1502* API: allow external entities to be defined without "jscs" prefix (Oleg Gaidarenko)
1503* Configuration: exclude `node_modules/` by default (Louis Pilfold)
1504* CLI: set "maxErrors" to Infinity with enabled "fix" option (Oleg Gaidarenko)
1505* Misc: change default dialect to es5 and make appropriate changes (Alexej Yaroshevich)
1506
1507Autofix
1508* Autofix: remove merge artefact (Oleg Gaidarenko)
1509* Autofix: support disallowTrailingComma rule (Oleg Gaidarenko)
1510* Autofix: support trailing whitespaces and missing commas (Andrzej Wamicz)
1511* validateQuoteMarks: try out "fix" field (Oleg Gaidarenko)
1512
1513Preset
1514* Preset: requireSemicolons = true for google preset (BigBlueHat)
1515* Preset: add jsDoc rules to relevant presets (Oleg Gaidarenko)
1516* Preset: add disallowTrailingWhitespace to MDCS (Joshua Koo)
1517* Preset: add requireVarDeclFirst rule to the relevant presets (Oleg Gaidarenko)
1518* Preset: update Wordpress preset (Ivo Julca)
1519* Preset: add requireCapitalizedComments to jquery and wordpress presets (Oleg Gaidarenko)
1520* Preset: update mdcs (Joshua Koo)
1521* Preset: require trailing comma in airbnb preset (Christophe Hurpeau)
1522* Preset: add missing rules to google preset (Christophe Hurpeau)
1523* Preset: update airbnb preset (Craig Jennings)
1524* Preset: update jquery and dependant presets (Oleg Gaidarenko)
1525* Preset: require spaces in anonymous FE for crockford style (Oleg Gaidarenko)
1526* Preset: fix requireDotNotation rule value according to es3 changes (Alexej Yaroshevich)
1527* Preset: remove jsdoc rules from yandex preset (Oleg Gaidarenko)
1528
1529New rules
1530* New rules: add SpaceBeforeComma rules (shashanka)
1531* New Rule: requireVarDeclFirst (oredi)
1532* New Rule: add JSDoc rules (Oleg Gaidarenko)
1533* New Rule: (disallow|require)SpaceBeforeSemicolon (Richard Munroe)
1534* New Rule: requireMatchingFunctionName (Pavel Strashkin)
1535* New Rule: requireTemplateStrings (Henry Zhu)
1536* New Rule: (require|disallow)ParenthesesAroundArrowParam (Henry Zhu)
1537* New Rule: requireSpread (Henry Zhu)
1538* New Rule: requireShorthandArrowFunctions (Henry Zhu)
1539* New Rule: requireArrowFunctions (Henry Zhu)
1540* New Rule: disallowNodeTypes (Henry Zhu)
1541* New Rule: requireNumericLiterals (Henry Zhu)
1542* New Rule: (disallow|require)ObjectKeysOnNewLine (Eli White)
1543
1544New rule values
1545* requireYodaConditions: support an array of operators (Ivo Julca)
1546* disallowYodaConditions: support an array of operators (Ivo Julca)
1547* (require|disallow)AnonymousFunctionExpression: account for shorthand methods (Henry Zhu)
1548* disallowMultipleVarDecl: add exception for require statements (Stefano Sala)
1549* disallowSpaceAfterObjectKeys: added ignoreAligned option (Andrey Ermakov)
1550* maximumLineLength: allow function delcarations to exceed limit (Clay Reimann)
1551* requirePaddingNewLinesAfterBlocks: add "inNewExpressions" to exceptions (Mato Ilic)
1552* disallowCommaBeforeLineBreak: added allExcept function (Andrey Ermakov)
1553* requirePaddingNewlinesInBlocks: Add object option to configuration (oredi)
1554* maximumLineLength: Add exception for long require expressions (Philip Hayes)
1555* NewlineBeforeBlockStatement: allow settings per block statement type (Dave Hilton)
1556* validateIndentation: add option to ignore comments (Danny Shternberg)
1557
1558Enhancements for ES6 support
1559* requireSemicolons: Add support for import and export declarations (Roman Dvornov)
1560* Esprima: Upgrade to 2.4.0 (Joel Kemp)
1561* requireArrowFunctions: don't check AssignmentExpression or Property (Henry Zhu)
1562* SpacesInFunctionDeclaration: check export default function (Henry Zhu)
1563* AlignedObjectValues: support computed property names (Henry Zhu)
1564* (disallow|require)SpaceAfterObjectKeys: check object method shorthand (Henry Zhu)
1565* (require|disallow)SpaceAfterObjectKeys: support computed properties (Henry Zhu)
1566* SpacesInsideObjectBrackets: Add Check for destructive assignments (Oleg Gaidarenko)
1567* Misc: use babel-jscs for the esnext option (Henry Zhu)
1568* requireSemicolons: Don't warn on class and function exports (Roman Dvornov)
1569
1570Inline control
1571* Errors: Ability to suppress a single line (Louis Pilfold)
1572* StringChecker: Remove grit processing includes (Tony Ganch)
1573
1574New reporters
1575* Reporters: add new machine readable unix-style reporter (Andreas Tolfsen)
1576* Reporters: add new summary reporter (oredi)
1577
1578Bug fixes
1579* Revert "New Rule: (disallow|require)SpaceBeforeSemicolon" (Oleg Gaidarenko)
1580* requireMultipleVarDecl: add exception for require statements (Stefano Sala)
1581* requirePaddingNewlinesAfterBlocks: initialize exceptions in configure (Eli White)
1582* disallowSpaceAfterKeywords: fix "else if" case (Henry Zhu)
1583* String-checker: do not check empty strings (Oleg Gaidarenko)
1584* requirePaddingNewLinesAfterBlocks: fixing blocks that end with semicolons (Eli White)
1585* disallowPaddingNewLinesAfterBlocks: fix blocks which end with semicolon (Oleg Gaidarenko)
1586* disallowSpaceAfterObjectKeys: support for legacy options (Andrey Ermakov)
1587* requireAlignedObjectValues: do not assert exact amount of spaces before colons (Andrey Ermakov)
1588* disallowImplicitTypeConversion: Don't report concat for same string literals (Oleg Gaidarenko)
1589* disallowSpacesInCallExpression: Extend rule to validate NewExpression (Inian Parameshwaran)
1590* Iterator: correct "TryStatement" path (Oleg Gaidarenko)
1591* requirePaddingNewLinesAfterBlocks: consider IIFE case (Oleg Gaidarenko)
1592* disallowKeywordsOnNewLine: Allow comments before keywords (oredi)
1593
1594Docs
1595* Docs: last minutes updates for 2.0 (Oleg Gaidarenko)
1596* Docs: update rules sum (Oleg Gaidarenko)
1597* Docs: add es3 option to OVERVIEW.md (Oleg Gaidarenko)
1598* Docs: reflect some of the 2.0 changes (Oleg Gaidarenko)
1599* Docs: clarify space brackets rules description (Oleg Gaidarenko)
1600* Docs: Remove needless semicolon (yong woo jeon)
1601* Docs: fix diff range link for 1.13.1 version (Alexej Yaroshevich)
1602* Docs: add link to commits between minor releases in CHANGELOG (Henry Zhu)
1603* Docs: Document how to programmatically invoke jscs (K. Adam White)
1604* Docs: Add and improve docs for inline comments (oredi)
1605* Docs: add message about demo not working, fix link to team (Henry Zhu)
1606* Docs: Change label to beginner-friendly (oredi)
1607* Docs: Mention which tickets are beginner-friendly (Joel Kemp)
1608* Docs: add "allowEOLComments" option info for disallowMultipleSpaces rule (bigmonkeyboy)
1609* Docs: correct syntax error for disallowFunctionDeclarations rule (Christophe Hurpeau)
1610* Misc: Docs: add docs and test for "esprima" config option (Oleg Gaidarenko)
1611* Docs: correct `true` value description (Adrian Heine né Lang)
1612* Docs: add quotes to the "wordpress" preset (raimon)
1613* Docs: align gitter badge with others (Oleg Gaidarenko)
1614* Docs: Add gitter room to readme (Joel Kemp)
1615* Docs: fix table of contents anchor links in contributing.md (Henry Zhu)
1616* Docs: add protocol to homepage address (Oleg Gaidarenko)
1617* Docs: update outdated info & fix small issue in jscs config (Oleg Gaidarenko)
1618* Docs: correct validateAlignedFunctionParameters values (Adrian Heine né Lang)
1619* Docs: various corrections for the rules page (Oleg Gaidarenko)
1620* disallowPaddingNewlinesInObjects: Clarify documentation (Ángel Sanz)
1621* requireSpacesInAnonymousFunctionExpression: fix syntax error in docs (Christophe Hurpeau)
1622
1623Misc
1624* Misc: add disallowTrailingComma rule to jscs config (Oleg Gaidarenko)
1625* Tests: correct preset examples (Oleg Gaidarenko)
1626* Misc: use babel-jscs 2.0.0, move jscs-jsdoc to dependencies (Henry Zhu)
1627* Misc: remove merge artefact (Oleg Gaidarenko)
1628* String-checker: make "fix" field private (Oleg Gaidarenko)
1629* Configuration: improve JSDoc notes (Oleg Gaidarenko)
1630* String-checker: use "fix" field in rule declaration if it exist (Oleg Gaidarenko)
1631* Errors: add "cast" method (Oleg Gaidarenko)
1632* Configuration: add "getConfiguredRule" method (Oleg Gaidarenko)
1633* Configuration: simplify and modulize configuration module (Oleg Gaidarenko)
1634* Tests: do not define anything if test should not run (Oleg Gaidarenko)
1635* Iterator: update to latest estraverse and don't monkeypatch (Oleg Gaidarenko)
1636* Misc: Add node .12 and io.js to the travis (Oleg Gaidarenko)
1637* Misc: add support for babel-jscs (Henry Zhu)
1638* Misc: bump estraverse to 2.x (Oleg Gaidarenko)
1639* requireArrowFunctions: only error for callbacks (Henry Zhu)
1640* Tests: Move require-matching-function-name to spec folder (Joel Kemp)
1641* requirePaddingNewlinesInBlocks: Refactor unit tests (oredi)
1642* requirePaddingNewlinesBeforeKeywords: Modify special scenarios (oredi)
1643* Tests: ES2015 Airbnb Preset (Christophe Hurpeau)
1644* requireTemplateStrings: refactor, check if either node is a string (Henry Zhu)
1645* Deps: Update JSHint and Lodash.assign (paladox)
1646* Improve JsFile constructor for better encapsulation (Marat Dulin)
1647* Refactor integration tests (Marat Dulin)
1648* Misc: remove extraneous file (Henry Zhu)
1649* Misc: increase coverage of remaining rules (Henry Zhu)
1650* disallowParenthesesAroundArrowParam: make exception when using a default parameter (Henry Zhu)
1651* requireTemplateStrings: improve logic (Oleg Gaidarenko)
1652* Misc: update dependencies (Henry Zhu)
1653* Misc: support class methods for various function rules (Henry Zhu)
1654* Misc: fix test filename for disallowSpaceBeforeObjectValues (Henry Zhu)
1655* Misc: add intergration tests for "autofix" feature (Oleg Gaidarenko)
1656* Tests: correct couple assertions (Oleg Gaidarenko)
1657* Misc: fix jsdoc types with non-standard Promise-star declaration (Alexej Yaroshevich)
1658* Lint: Add jscs-jsdoc plugin (Alexej Yaroshevich)
1659* Misc: update dependencies & temporary remove coverage badge (Oleg Gaidarenko)
1660* Misc: code style fixes (Alexej Yaroshevich)
1661* Misc: introduce reservedWords instead of utils.isES3 (Alexej Yaroshevich)
1662* Intergration: correct integration tests for big amount of results (Oleg Gaidarenko)
1663* validateIndentation: deprecate includeEmptyLines in favour of allExcept (Oleg Gaidarenko)
1664
1665## Version [1.13.1](https://github.com/jscs-dev/node-jscs/compare/v1.13.0...v1.13.1)
1666
1667### Overview
1668Small update for fix distribution of the `--esnext` CLI option (#1321)
1669
1670### Bug fixes
1671* CLI: use "esnext" cli option in the configuration module (Oleg Gaidarenko)
1672* CLI: ensure options to path.resolve are strings (Jason Karns)
1673* disallowMultipleSpaces: fix configuration error message (Marc Knaup)
1674
1675### Docs
1676* Docs: correct example for the "requireCapitalizedComments" rule (XhmikosR)
1677* Docs: Update mixup between rules in docstring example (Jérémie Astori)
1678* Docs: Fix missing quotes in a docstring example (Jérémie Astori)
1679
1680## Version [1.13.0](https://github.com/jscs-dev/node-jscs/compare/v1.12.0...v1.13.0)
1681
1682### Overview
1683
1684This is mostly an incremental update, which includes important fixes for annoyances like `npm ERR! EEXIST, symlink` error at `npm install`. We also improved ES6 support, added seven new rules, three new rule values and now you can declare `verbose` option at the config.
1685
1686There are no preset updates in this release, but if you feel that rules are missing in
1687the supported [presets](http://jscs.info/overview.html#presets) - please send us a PR.
1688
1689We eagerly wait for the Esprima 2.3 release, since soon after, `esnext` option will be set to `true` by default.
1690
1691We would like specifically thanks @TheSavior and @hzoo for their hard work on this release.
1692
1693### New options
1694* New option: add "verbose" option as a config option (Oleg Gaidarenko)
1695
1696### New rules
1697* New rule: validateAlignedFunctionParameters (Bram Cordie)
1698* New rule: (disallow|require)PaddingNewLinesBeforeExport (Eli White)
1699* New rule: validateNewlineAfterArrayElements (Alexej Yaroshevich)
1700* New rule: (require |disallow)NamedUnassignedFunctions (Todd Wolfson)
1701* New rule: maximumNumberOfLines (Henry Zhu)
1702* New rule: (disallow|require)PaddingNewLinesAfterUseStrict (Eli White)
1703* New rule: disallowNotOperatorsInConditionals (Henry Zhu)
1704
1705### New rule values
1706* requirePaddingNewLinesAfterBlocks: add exceptions (Eli White)
1707* requireSpaceBeforeBlockStatements: add number of spaces argument (Oleg Pesok)
1708* requireDollarBeforejQueryAssignment: add "ignoreProperties" rule value (Alexej Yaroshevich)
1709
1710### Bug fixes
1711* paddingNewLinesBeforeLineComments: code and comment on the same line (Oleg Gaidarenko)
1712* disallowKeywordsOnNewLine: "do..while" on new line (oredi)
1713* requirePaddingNewLinesBeforeLineComments: first token and not first line (Eli White)
1714* Errors: should not show rule for "Unsupported rule" error (Oleg Gaidarenko)
1715* requireOperatorBeforeLineBreak: autofix by moving operator (Nick Santos)
1716* disallowIdentifierNames: fix errors with using object properties as an identifier (Henry Zhu)
1717* requireDollarBeforejQueryAssignment: Allow leading underscores before $ sign (Eli White)
1718* requireCamelCaseOrUpperCaseIdentifiers: skip es5 getters if ignoreProperties is set (Alexej Yaroshevich)
1719* requireSemicolons: fix warning positions (Roman Dvornov)
1720* requireMultipleVarDecl: fix switch statement case (Todd Wolfson)
1721* paddingNewLineAfterVariableDeclaration: simlification and more tests (Oleg Gaidarenko)
1722* paddingNewLineAfterVariableDeclaration: add check for let and const (Martin Kolárik)
1723* paddingNewLineAfterVariableDeclaration: do not trip off on the semicolon (Oleg Gaidarenko)
1724* paddingNewLinesAfterBlocks: ease up on function calls (Oleg Gaidarenko)
1725* requirePaddingNewLineAfterVariableDeclaration: allow exception (Henry Zhu)
1726* requireLineBreakAfterVariableAssignment: add check for let and const (Henry Zhu)
1727* requireCapitalizedComments: handle textblocks correctly (Martin Kolárik)
1728
1729### Misc
1730* js-file: small JSDoc improvement (Oleg Gaidarenko)
1731* Tests: fix node-style-guide preset (Martin Kolárik)
1732* Utils: add "true" and "false" to list of reserved words (Dmitry Sorin)
1733* Update esprima-harmony version (Oleg Gaidarenko)
1734* Tests: Add a test helper for asserting errors and autofix (Eli White)
1735* disallowKeywordsOnNewLine: make jshint happy (Oleg Gaidarenko)
1736* disallowMultipleVarDecl: add test for var inside switch clause (Alexej Yaroshevich)
1737* errors: additional tests, coverage (Alexej Yaroshevich)
1738* string-checker: wrap rule.check into try-catch (Alexej Yaroshevich)
1739* errors: fix test flow with filtering (Alexej Yaroshevich)
1740
1741### Docs
1742* Docs: add link to overcommit under "Friendly packages" (Joe Lencioni)
1743* Docs: add a message to mention the verbose option (Henry Zhu)
1744* Docs: clarify that CLI options can be used in the config (Henry Zhu)
1745* Docs: clarify that disallowMultipleSpaces matches tabs and spaces (Henry Zhu)
1746* Docs: clarify how to disable a rule and use a config file (Henry Zhu)
1747* Docs: Clarify behavior of requireCamelCaseOrUpperCaseIdentifiers (Henry Zhu)
1748* Docs: fix disallowMultipleSpaces rule name in CHANGELOG (Alexej Yaroshevich)
1749* Docs: add two new presets to list of preset values (Jed Wood)
1750* Docs: add link to the preset option from the list of presets (Steve Lee)
1751* Docs: add shorten flags to cli (Henry Zhu)
1752* Docs: add auto fix option to cli docs (Henry Zhu)
1753* Docs: fix disallowMultipleSpaces invalid example (Henry Zhu)
1754* Docs: fix various docs typos (Eli White)
1755
1756## Version [1.12.0](https://github.com/jscs-dev/node-jscs/compare/v1.11.0...v1.12.0)
1757
1758### Overview
1759Ladies and Gentlemen... Elvis is in the building - auto-fixing is finally here! We were working really hard to make this powerful new feature, and to make it right. We're hoping it will truly help make your code look good.
1760
1761Auto-fixing supports the [EOF rule](http://jscs.info/rules.html#requirelinefeedatfileend) and all rules related to spacing, including [validateIndentation](http://jscs.info/rules.html#validateindentation) which is the most complicated rule we have (big thanks to @mikesherov for making that happen).
1762
1763Although this chunk of rules covers most of the popular use-cases, we're determine to add more rules to this list, please help us out and report any bugs or consider contributing with some code - http://jscs.info/contributing.html. We're really friendly to every new contributor.
1764
1765Apart from auto-fixing, there are six new rules – fresh out of the oven. Special thanks goes to @lahmatiy, who had the patience and perseverance to implement [`requireSemicolons`](http://jscs.info/rules.html#requiresemicolons).
1766
1767Because of tireless efforts of @hzoo, we're adding two new presets in this release - [`node-style-guide`](https://github.com/felixge/node-style-guide ) and [`wordpress`](https://make.wordpress.org/core/handbook/coding-standards/javascript). They have pretty consistent style guides... try it out; They are a breeze to work with.
1768
1769We're very grateful to everyone who helped out with this release, especially to @TheSavior who helped review the pull requests and shape out our API.
1770
1771### Preset updates
1772* Preset: remove "requireMultipleVarDecl" rule from jquery preset (Oleg Gaidarenko)
1773* Preset: wordpress (Henry Zhu)
1774* Preset: Add "requireSemicolons" rule to the Yandex preset (ikokostya)
1775* Preset: Add validate indentation rule for Yandex (Gunnar Lium)
1776* Preset: node-style-guide (Henry Zhu)
1777* Preset: update airbnb preset (Eli White)
1778* Preset: require blank line before all line comments for jQuery preset (Eli White)
1779* Preset: Add "requireSpaceBeforeObjectValues" to crockford test (Jackson Ray Hamilton)
1780
1781### Auto-fixing
1782* validateIndentation: autofixing! (Mike Sherov)
1783* TokenAssert: only fix lines when comments do not exist between tokens (Mike Sherov)
1784* disallowMultipleLineString: do not yet allow autofixing, which is a non-whitespace change (Mike Sherov)
1785* disallowSemicolons: do not yet allow autofixing, which is a non-whitespace change (Mike Sherov)
1786* Autofixing: add more rules to use assertion framework (Henry Zhu)
1787* Autofixing: make most rules use assertion framework when possible (Eli White)
1788* Autofixing: initial implementation (mdevils)
1789* Autofixing: token data (mdevils)
1790
1791### New rules
1792* New Rule: requireSemicolons (Roman Dvornov)
1793* New Rule: disallowMultipleSpaces (Todd Wolfson)
1794* New Rule: disallowIdentifierNames (alawatthe)
1795* New Rule: requirePaddingNewLineAfterVariableDeclaration (Evan Jacobs)
1796* New Rule: requireDollarBeforejQueryAssignment (Eli White)
1797* New Rules: (disallow/require)PaddingNewLinesBeforeLineComments (Eli White)
1798
1799### Rule Values
1800* requireCapitalizedComments: Add `allExcept` option (Ash Clarke)
1801
1802### Auto-configuration
1803* Auto-Configuration: show error count when handling violated rules (fubu)
1804* Auto-Configuration: show number of violated rules (fubu)
1805
1806### CLI
1807* CLI: simplify and increase coverage of "cli-config" module (Oleg Gaidarenko)
1808* CLI: increase coverage of the "cli" module (Oleg Gaidarenko)
1809
1810### Bug fixes
1811* (require|disallow)spacesIn*: add more invalid examples and fixes for rules (Henry Zhu)
1812* disallowSpacesInsideArrayBrackets: fix error messages (Henry Zhu)
1813* requireSpacesInsideArrayBrackets: comments should be also taken into account (gero3)
1814* disallowSpaceBeforeBinaryOperators: comments are allowed (gero3)
1815* requireLineBreakAfterVariableAssignment: allow exception for init part of for loop (Henry Zhu)
1816* (require|disallow)SpacesInsideArrayBrackets: use includeComments in token (Henry Zhu)
1817* disallowAnonymousFunctions: remove errant "s" from error message (James Chin)
1818* disallowDanglingUnderscores: Corrected rule name in assert message (Oswald Maskens)
1819* Parsing: Extend estraverse rules to support both XJS and JSX (Henry Zhu)
1820* (disallow/require)PaddingNewLinesAfterBlocks: Ignoring the end of files (Eli White)
1821* requirePaddingNewLinesBeforeLineComments: Allow consecutive comments and firstAfterCurly exception (Eli White)
1822
1823### Misc
1824* disallowSpacesInsideParentheses: fix es6 template literal token issues (Mike Sherov)
1825* RequireAlignedObjectValues: use assertions (Mike Sherov)
1826* DisallowMultipleLineBreaks: use assertions (Mike Sherov)
1827* Tests: Move to spec folder (Joel Kemp)
1828* Tests: Adding some more fix tests (Eli White)
1829* Tests: move specs into a subdir so that tests, fixtures, and utilities aren't intermingled (Mike Sherov)
1830* Misc: update dependencies (Oleg Gaidarenko)
1831* JsFile: Make getTokens include comments (Eli White)
1832* Assertions: Add fixing tests to several rules (Eli White)
1833* Assertions: add tests for linesBetween (Mike Sherov)
1834* Assertions: Make sure newlines get fixed (gero3)
1835* TokenAssert: remove newline fixing logic duplication to prepare for further fixes (Mike Sherov)
1836* TokenAssert: simplify and strengthen linesBetween rules (Mike Sherov)
1837* Token Assert: normalize whiteSpace assertions to match line assertions (Mike Sherov)
1838* requireLineFeedAtFileEnd: make use of assert (gero3)
1839* Don't trim whitespace in markdown-files (Simen Bekkhus)
1840* Cleanup: use this.getOptionName() for consistency, options variable (Henry Zhu)
1841* Cleanup: use iterateTokensByTypeAndValue where appropriate (Mike Sherov)
1842* Cleanup: remove archaic functions from JsFile (Mike Sherov)
1843* Cleanup: remove usage of getComment(After|Before)Token (Mike Sherov)
1844* Cleanup: remove redundant boolean check, use consistent error messages (Henry Zhu)
1845* Cleanup: use iterateTokensByTypeAndValue and this.getOptionName() (Henry Zhu)
1846* requireSpaceAfterKeywords: use token assert (Henry Zhu)
1847* JsFile::getFirstTokenOnLine implementation (for indentation rules) (mdevils)
1848* Replaces the 'colors' and 'supports-colors' packages with 'chalk'. (Joshua Appelman)
1849* Fix various doc typos (Jérémie Astori)
1850* requirePaddingNewLinesAfterBlockDeclarations / disallowPaddingNewLinesAfterBlockDeclarations Adding an option to specify lines for errors.assert.differentLine (Eli White)
1851* JsFile: add getLineBreaks function to support future whitespace fixes (Mike Sherov)
1852* Appveyor: freeze node version to 0.12.x (Alexej Yaroshevich)
1853* requireCapitalizedComments: automatically except `jscs` comments (James Reggio)
1854
1855### Docs
1856* Docs: Change "Values" and "Types" to grammatically correct forms (Shmavon Gazanchyan)
1857* Docs: add reporter (sanemat)
1858* Docs: less.js uses jscs (Bass Jobsen)
1859* Docs: added Goodvidio to the list of adopters (Adonis K)
1860* Fix types and descriptions in documentation (Shmavon Gazanchyan)
1861
1862## Version [1.11.3](https://github.com/jscs-dev/node-jscs/compare/v1.10.0...v1.11.3)
1863
1864### Bug fixes
1865* JsFile: ensure getLinesWithCommentsRemoved does not alter future getComments calls. (Mike Sherov)
1866
1867### Misc.
1868* modules/utils normalizePath: fixed test for windows env (Alexej Yaroshevich)
1869
1870## Version [1.11.2](https://github.com/jscs-dev/node-jscs/compare/v1.10.0...v1.11.2)
1871
1872### Bug fixes
1873* validateIndentation: ignore empty module bodies (Mike Sherov)
1874* Object rules: ignore ES5 getters/setters when appropriate. (Mike Sherov)
1875* Ensure esprimaOptions is not mistaken for a rule (Yannick Croissant)
1876
1877### Infrastructure Changes
1878* CI: Add AppVeyor (Adeel)
1879
1880### Misc.
1881* Add @zxqfox to the list of maintainers (mdevils)
1882
1883## Version [1.11.1](https://github.com/jscs-dev/node-jscs/compare/v1.10.0...v1.11.1)
1884
1885### New Rules / Rule Values
1886* disallowSpaceAfterObjectKeys: implement ignoreSingleLine and ignoreMultiLine options (Henry Zhu)
1887
1888### Bug fixes
1889* disallowAllowSpacesInsideParentheses: reintroduce archaic "all" config option (Mike Sherov)
1890* requireSpaceBetweenArguments: loosen rule restriction (Mike Sherov)
1891* Object Key rules: ignore method syntax (Alexej Yaroshevich)
1892* (require|disallow)TrailingComma: fixed error location (Alexej Yaroshevich)
1893
1894### Infrastructure Changes
1895* Auto-generate: Move promisify to utils (Joel Kemp)
1896
1897### Misc.
1898* JSHint: add unused true (Mike Sherov)
1899* Updating rules to use File Traversal APIs. (Eli White)
1900* Docs: Add website rebuild instructions to maintenance (Mike Sherov)
1901
1902## Version [1.11.0](https://github.com/jscs-dev/node-jscs/compare/v1.10.0...v1.11.0)
1903
1904### Preset Updates
1905* Preset: add "requireSpaceBetweenArguments" rule to all presets (Oleg Gaidarenko)
1906* Presets: Remove use of outdated validateJSDoc rule (Joel Kemp)
1907* Preset: Add "requireSpacesInsideParentheses" to jquery preset (Oleg Gaidarenko)
1908* Preset: switch multipleVarDecl rule in airbnb preset (Martin Bohal)
1909* Preset: change value of "requireDotNotation" rule for jquery preset (Oleg Gaidarenko)
1910
1911### New Config Options
1912* Configuration: Auto-generation (Joel Kemp)
1913* Config: Add support for custom Esprima options. (Chris Rebert)
1914
1915### New Rules / Rule Values
1916* New Rule: disallowKeywordsInComments (Joe Sepi)
1917* New Rules: (require|disallow)SpacesInsideBrackets (Mike Sherov)
1918* validateIndentation: new rule value - includeEmptyLines (Jonathan Gawrych)
1919* disallowTrailingWhitespace: new rule value - ignoreEmptyLines (Jonathan Gawrych)
1920* New Rule: disallowCurlyBraces (Henry Zhu)
1921* requireCapitalizedConstructors: accept list of exempt constructors (Sam L'ecuyer)
1922* validateIndentation: exception to indentation rules for module pattern (Mike Sherov)
1923
1924### Bug fixes
1925* (require|disallow)SpacesInsideArrayBrackets: only check for ArrayExpressions (Mike Sherov)
1926* JsFile: remove all duplicate tokens. (Mike Sherov)
1927* ObjectExpression Rules: take into account shorthand syntax. (Mike Sherov)
1928* disallowSpaceBeforeKeywords: don't report an error on back-to-back keywords (Mike Sherov)
1929* requireParenthesesAroundIIFE: fix crash on semicolon-free IIFE (Yuheng Zhang)
1930* Parsing: tolerate non-leading import statements (Chris Rebert)
1931* requireCapitalizedComments: improve letter recognition (Mathias Bynens)
1932* requireSpaces*: fix error message to 'Exactly one space required' (Henry Zhu)
1933* StringChecker: leading hashbangs should still report correct error line numbers (Mike Sherov)
1934* validateIndentation: don't check bracelets else indentation. (Mike Sherov)
1935* validateIndentation: don't consider return when classifying break indentation (Mike Sherov)
1936* validateIndentation: fix multiline while in doWhile statements (Mike Sherov)
1937* validateIndentation: ensure pushes and pops are matching (Mike Sherov)
1938* validateIndentation: ensure semicolon free indentations are on correct line (Mike Sherov)
1939* SpaceBetweenArguments: catch call expression arguments (Oleg Gaidarenko)
1940* token-assert: add check for document start to prevent crashes (Alexej Yaroshevich)
1941* requireSpaceBeforeBlockStatements: reworded an error message (Alexej Yaroshevich)
1942
1943### Infrastructure Changes
1944* js-file: added getCommentAfter/BeforeToken functions (Alexej Yaroshevich)
1945* cleanup: remove lib/token-helper (Mike Sherov)
1946* JsFile: move getLinesWithCommentsRemoved from comment-helper (Mike Sherov)
1947
1948### Misc.
1949* disallowSpacesInsideArrayBrackets: fix rule name in example (Gustavo Henke)
1950* Misc: update dependencies (Oleg Gaidarenko)
1951* various rules: use tokenAssert (Henry Zhu)
1952* Speed up builds by using Docker-based Travis CI (Pavel Strashkin)
1953* 100% code coverage on various files(Mike Sherov)
1954* disallowSpace(Before | After)Keywords: more tests (Alexej Yaroshevich)
1955* requireCurlyBrace: more tests (Alexej Yaroshevich)
1956* CLI: correct JSDoc comment (Oleg Gaidarenko)
1957* requireQuotedKeysInObjects: fixing file permissions (Joe Sepi)
1958* Changelog: correct version number (Oleg Gaidarenko)
1959* Docs: add missed commit to the changelog (Oleg Gaidarenko)
1960* Misc: .editorconfig - fix for invalid indent_style value (Dmitriy Schekhovtsov)
1961* Update regenerate to ~1.2.1 (Chris Rebert)
1962* Add description to commander CLI help (Chris Rebert)
1963
1964## Version [1.10.0](https://github.com/jscs-dev/node-jscs/compare/v1.9.0...v1.10.0)
1965* Preset: correct wikimedia preset test (Oleg Gaidarenko)
1966* Preset: correct jquery preset test (Oleg Gaidarenko)
1967* Preset: add disallowKeywordsOnNewLine rule to google preset (Oleg Gaidarenko)
1968* Preset: add "requireSpacesInForStatement" rule to the presets (Oleg Gaidarenko)
1969* Preset: add 'catch' to "disallowKeywordsOnNewLine" rule for wikimedia (James Forrester)
1970
1971* disallowSpacesInForStatement: Disallow spaces in between for statement (gero3)
1972* requireSpacesInForStatement: Requires spaces inbetween for statement (gero3)
1973* New rule: requireQuotedKeysInObjects (hpshelton)
1974
1975* disallowSpacesInsideObjectBrackets: implement "allExcept" option (Oleg Gaidarenko)
1976* requireSpacesInsideObjectBrackets: implement "allExcept" option (Oleg Gaidarenko)
1977* disallowSpacesInsideArrayBrackets: implement "allExcept" option (Oleg Gaidarenko)
1978* requireSpacesInsideArrayBrackets: implement "allExcept" option (Oleg Gaidarenko)
1979* requireDotNotation: new rule value - except_snake_case (Alexej Yaroshevich)
1980
1981* Configuration: ability to specify and query es3/es6 support in files. (Mike Sherov)
1982
1983* cli-config: add "getReporter" method (Oleg Gaidarenko)
1984
1985* requireSpaceBeforeBlockStatements: fix for else statement (Oleg Gaidarenko)
1986* disallowSpaceBeforeBlockStatements: fix for else statement (Beau Gunderson)
1987* disallowKeywordsOnNewLine: add special case for "else" without braces (Oleg Gaidarenko)
1988* validateIndentation: fix bug with anonymous function return in switch case (Mike Sherov)
1989* validateIndentation: fix bug with brace-less if in a switch case. (Mike Sherov)
1990* validateIndentation: fix bug with indentation of bare blocks. (Mike Sherov)
1991* disallowSpaceAfterBinaryOperators: report correct operator error (Oleg Gaidarenko)
1992* requireSpaceAfterBinaryOperators: report correct operator error (Oleg Gaidarenko)
1993* Fixes #909 (wrong type for disallow-capitalized-comments) (alawatthe)
1994* token-assert: add guards for token and subjectToken properties (Oleg Gaidarenko)
1995* ESNext: update esprima to properly parse regex tokens (Mike Sherov)
1996* requireNewlineBeforeBlockStatements: add guard for the first symbol (Oleg Gaidarenko)
1997* disallowNewlineBeforeBlockStatements: add guard for the first symbol (Oleg Gaidarenko)
1998* requireDotNotation: require dots for es3 keywords when not in es3 mode (Mike Sherov)
1999* JsFile: make getNodeByRange check condition less strict (gero3)
2000* requireSpacesInConditionalExpression: notice parentheses (Alexej Yaroshevich)
2001* disallowSpacesInConditionalExpression: notice parentheses (Alexej Yaroshevich)
2002* requirePaddingNewlinesBeforeKeywords: add token exceptions (jdlrobson)
2003* requireLineBreakAfterVariableAssignment: fix edge cases (jdlrobson)
2004
2005* Docs: various readme fixes (Oleg Gaidarenko)
2006* Docs: improve "excludeFiles" documentation (Alex Yaroshevich)
2007* Docs: Fixed level for 1.9.0 to be the same as for 1.8.x (Alexander Artemenko)
2008* README: Fix Bootstrap's name (Chris Rebert)
2009
2010* requireOperatorBeforeLineBreak: Use the new assertion framework (hpshelton)
2011* cli-config: add JSDoc for exposed methods (Oleg Gaidarenko)
2012* (require | disallow)SpacesInsideObjectBrackets: add bunch of newlines (Oleg Gaidarenko)
2013* Misc: make jscs happy (Oleg Gaidarenko)
2014* disallowSpaceBeforeBlockStatements: correct test names (Oleg Gaidarenko)
2015* disallowSpaceBeforeBlockStatements: use assertion API (Oleg Gaidarenko)
2016* requireKeywordsOnNewLine: use assertion API (Oleg Gaidarenko)
2017* Misc: complitly replace hooker with sinon (Oleg Gaidarenko)
2018* CLI: correct tests for the "reporter" option (Oleg Gaidarenko)
2019* (require | disallow)NewlineBeforeBlockStatements: remove needless guards (Oleg Gaidarenko)
2020* (require | disallow)NewlineBeforeBlockStatements: use assertion API (Nicholas Bartlett)
2021* Move website to a different repo (mdevils)
2022* utils: add isSnakeCased, trimUnderscores methods (Alexej Yaroshevich)
2023* requireSpace(Before|After)BinaryOperators: Add tests for error column (hpshelton)
2024* modules/checker: call spy.restore() after assertions in checkStdin (Alexej Yaroshevich)
2025* Misc: correct file flags - chmod -x (Oleg Gaidarenko)
2026* Build: update dependencies (Oleg Gaidarenko)
2027
2028## Version [1.9.0](https://github.com/jscs-dev/node-jscs/compare/v1.8.0...v1.9.0)
2029* Preset: update wikimedia preset (Timo Tijhof)
2030* Preset: update crockford preset (Jackson Ray Hamilton)
2031
2032* New Rules: (require | disallow)SpaceBetweenArguments (James Allardice)
2033* New Rules: requireLineBreakAfterVariableAssignment (jdlrobson)
2034* New Rules: disallowSemicolons (Christopher Cliff)
2035
2036* CLI: relative path resolving fix (mdevils)
2037* requireCurlyBraces: correctly set error pointer (Oleg Gaidarenko)
2038* requireOperatorBeforeLineBreak: Detect binary operator after literal (Lucas Cimon)
2039* requireCapitalizedComments: correct letter recognition (alawatthe)
2040
2041* CLI: Remove duplicated error reporting code paths (Mike Sherov)
2042* CLI: remove duplicated preset existence check (Mike Sherov)
2043* Iterator: extend estraverse rules to support JSX (Yannick Croissant)
2044* Iterator: use estraverse in tree-iterator. (mdevils)
2045* CLI: Move configuration override to node-configuration (Mike Sherov)
2046
2047* Docs: small correction to contributing guide (Oleg Gaidarenko)
2048* Docs: fixed incorrect rule name in example (alawatthe)
2049* Docs: added keywords for Googleability (Devin Ekins)
2050* Docs: Correct documentation for disallowOperatorBeforeLineBreak (jdlrobson)
2051* Docs: Added quotes for uniformity (Callum Macrae)
2052* Docs: Typo fix (Alexander Sofin)
2053* Docs: fix urls to yandex codestyle (Andrey Morozov)
2054
2055## Version [1.8.1](https://github.com/jscs-dev/node-jscs/compare/v1.7.0...v1.8.1)
2056 * Assertions: always allow new lines in whitespaceBetween (Henry Zhu)
2057 * Tests: reorganization, full coverage for JsFile (mdevils)
2058
2059## Version [1.8.0](https://github.com/jscs-dev/node-jscs/compare/v1.7.0...v1.8.0)
2060 * Preset: Grunt (Joel Kemp)
2061 * Preset: remove "disallowMultipleLineBreaks" rule from crockford preset (Oleg Gaidarenko)
2062
2063 * New Rules: disallowOperatorBeforeLineBreak (jdlrobson)
2064 * New Rules: (require | disallow)PaddingNewlinesBeforeKeywords (Anton Vishnyak)
2065 * New Rules: disallowSpaceBeforeKeywords (Bryan Donovan)
2066 * New Rules: requireSpaceBeforeKeywords (Bryan Donovan)
2067
2068 * Parsing: Ability to specify a custom esprima version via CLI or config (Konstantin Tarkus)
2069 * Errors: Support a filter to control which errors are reported (Joel Kemp)
2070 * Assertions: better rule error reporting. (mdevils)
2071 * Better configuration, plugin support (mdevils)
2072
2073 * disallowDanglingUnderscores: Support an array of additional exceptions (Henry Zhu)
2074 * requireTrailingComma: add option ignoreSingleLine (eltacodeldiablo)
2075 * StringChecker: unsupported rules shown as style errors and not thrown exceptions (Joel Kemp)
2076 * Iterate over "export" statement of ES6 (Oleg Gaidarenko)
2077 * disallowMultipleVarDecl: add exception for undefined variable declarations (Henry Zhu)
2078 * disallowDanglingUnderscores: add "super_" to allowed identifier list (Markus Dolic)
2079 * disallowSpacesInAnonymousFunctionExpression: set correct error pointer (Oleg Gaidarenko)
2080 * requireSpaceAfterLineComment: add "except" option (Alexej Yaroshevich)
2081
2082 * validateParameterSeparator: fix for multiple spaces between parameters (Henry Zhu)
2083 * Added test and patch for `finally` as a spaced keyword (Todd Wolfson)
2084 * requireCapitalizedComments: Better support for multi-line comments (indexzero)
2085 * disallowSpaceBeforeKeywords: Fix assertion typo (Jeremy Fleischman)
2086 * Errors: Simplify rules debugging and prevent crashes in error reporters (Alexej Yaroshevich)
2087 * Correct error message for "requireSpaceAfterKeywords" rule (Bryan Donovan)
2088
2089 * Docs: Fix Yandex codestyle link (Garmash Nikolay)
2090 * Docs: Added clarification of tokens in disallowSpacesInConditionalExpression (indexzero)
2091 * Docs: add twitter and mailling list links (Oleg Gaidarenko)
2092 * Docs: add more specific cases for function spaces rules (Henry Zhu)
2093 * Docs: make indentation to be consistent at 4 spaces (Henry Zhu)
2094 * Docs: Correct docs for requireAnonymousFunctions rule (Oleg Gaidarenko)
2095 * Docs: Clarify "config" option (MaximAL)
2096 * Docs: Add Plugins section (Alexej Yaroshevich)
2097
2098## Version [1.7.3](https://github.com/jscs-dev/node-jscs/compare/v1.6.0...v1.7.3)
2099 * Parsing: Use the harmony parser via the esnext flag in the config (Joel Kemp)
2100 * validateIndentation: handle breakless case statements (Mike Sherov)
2101
2102## Version [1.7.2](https://github.com/jscs-dev/node-jscs/compare/v1.6.0...v1.7.2)
2103 * validateIndentation: fix return in switch failure (Mike Sherov)
2104 * Cast StringChecker maxErrors property to Number the first time (Florian Fesseler)
2105 * Fix format of --esnext and --max-errors in README (Joe Lencioni)
2106
2107## Version [1.7.1](https://github.com/jscs-dev/node-jscs/compare/v1.6.0...v1.7.1)
2108 * validateIndentation: fix empty multiline function body regression (Mike Sherov)
2109
2110## Version [1.7.0](https://github.com/jscs-dev/node-jscs/compare/v1.6.0...v1.7.0)
2111 * validateJSDoc: Deprecate rule (Joel Kemp)
2112 * Updated google preset (Richard Poole)
2113 * Add "requireSpaceBeforeBlockStatements" rule into the jquery preset (Oleg Gaidarenko)
2114
2115 * CLI: Support --esnext to Parse ES6. (Robert Jackson)
2116 * CLI: Support a --max-errors option to limit the number of reported errors (mdevils)
2117
2118 * New Rules: (require|disallow)CapitalizedComments (Joel Kemp)
2119 * New Rules: (require|disallow)SpacesInCallExpression (Mathieu Schroeter)
2120 * New Rules: (disallow|require)FunctionDeclarations (Nikhil Benesch)
2121 * New Rules: (require|disallow)PaddingNewLinesInObjects (Valentin Agachi)
2122
2123 * Implement "only" for parens rule (Oleg Gaidarenko)
2124 * Simplify "allButNested" option for spaces rule (Oleg Gaidarenko)
2125 * Implement "except" option for spaces rule (Oleg Gaidarenko)
2126 * disallowMultipleVarDecl: Strict mode to disallow for statement exception (Joel Kemp)
2127
2128 * disallowSpaceBeforeObjectKeys: fix parenthesised property value (Jindrich Besta)
2129 * requireSpaceBeforeObjectValues: fix parenthesised property value (Jindrich Besta)
2130 * validateIndentation: Allow non-indented "break" in "switch" statement (kevin.destrem)
2131 * ValidateIndentation: remove array and object indentation validation (Mike Sherov)
2132 * validateIndentation: Allow the "if" test to be nested. (Jesper Birkestrøm)
2133 * ValidateIndentation: Relax indentation rules for function expressions. (Mike Sherov)
2134 * requireCurlyBraces: support the with statement (Joel Kemp)
2135 * Fix invalid result of findXxxxToken methods when value is provided (Romain Guerin)
2136 * requireSpaceAfterLineComment: skips msjsdoc comments (Alexej Yaroshevich)
2137
2138 * Docs: add a table of contents to README (Henry Zhu)
2139 * Docs: Make version numbers real markdown headers (Alexander Artemenko)
2140
2141## Version [1.6.2](https://github.com/jscs-dev/node-jscs/compare/v1.5.0...v1.6.2)
2142 * Fix disallowMultipleLineBreaks with shebang line (Nicolas Gallagher)
2143 * Improve validateParameterSeparator rule (David Chambers)
2144 * Add rule for parameter separation validation (James Allardice)
2145 * Add new rules for object values (Vivien TINTILLIER)
2146 * Docs: add intellij plugin to friendly packages (idok)
2147 * Support predefined values for another three rules (Joel Kemp)
2148
2149## Version [1.6.1](https://github.com/jscs-dev/node-jscs/compare/v1.5.0...v1.6.1)
2150 * Airbnb preset (Joel Kemp)
2151 * Improve crockford preset (Vivien TINTILLIER)
2152 * Avoid node.js 0.10.x exit code bug for MS Windows (Taku Watabe)
2153 * Docs: Update packages and extensions sections with new URLs. (Mike Sherov)
2154
2155## Version [1.6.0](https://github.com/jscs-dev/node-jscs/compare/v1.5.0...v1.6.0)
2156 * Errors: ability to suppress errors via inline comments. (Mike Sherov)
2157 * Fix Anonymous Functions in google preset (Ayoub Kaanich)
2158 * Enhance google's preset (Joel Kemp)
2159 * Add "iterateTokenByValue" method (Oleg Gaidarenko)
2160 * Node -> Tokens navigation, token list navigation (Marat Dulin)
2161 * Do not strip json config from comments (Oleg Gaidarenko)
2162 * maximumLineLength should not be destructive (Oleg Gaidarenko)
2163 * Use tilde for package definition (Jordan Harband)
2164 * Improve stdin support (Joel Kemp)
2165 * Use correct logic for piped input (Joel Kemp)
2166 * Properly concatenate large files read from stdin (Nikhil Benesch)
2167 * Add link to the Atom editor plugin for JSCS (Addy Osmani)
2168 * Setting default tree to empty object (Bryan Donovan)
2169
2170## Version 1.5.9
2171 * Binary Rules: Remove colon check from all binary rules (Oleg Gaidarenko)
2172 * Presets: Add Mr. Doob's Code Style (MDCS) (gero3)
2173 * Presets: Add Crockford (Timo Tijhof)
2174 * Google Preset: Add missing constraints (Turadg Aleahmad)
2175 * Yandex Preset: Remove repeated rule in yandex preset (Benjamin Tamborine)
2176 * Yandex Preset: updated to be more accurate (ikokostya)
2177 * New Rules: (require|disallow)NewlineBeforeBlockStatements (cipiripper)
2178 * New Rules: (require|disallow)AnonymousFunctions (Rachel White)
2179 * New Rules: (disallow|require)SpacesInFunction (Mike Sherov)
2180 * CLI: Accepts piped input from stdin (Joel Kemp)
2181 * CLI: Add --verbose option that adds rule names to error output. (Mike Sherov)
2182 * Errors: report Esprima parse errors as rule violations. (Mike Sherov)
2183 * disallowMultipleLineBreaks: fix issues with shebang line (Bryan Donovan)
2184 * spacesInFunctionExpressions: ignore function declarations. (Mike Sherov)
2185
2186## Version 1.5.8
2187 * Errors: include which rule triggered the error in the error output (gero3)
2188 * requireTrailingComma: Allow single property objects / arrays to ignore the rule. (Joel Kemp)
2189 * requireTrailingComma: Avoids false positives from non object/array literal definitions. (Joel Kemp)
2190 * validateIndentation: fix indentation for non-block `if` that has block `else`. (Mike Sherov)
2191 * maximumLineLength: Document the required and default values. (Joel Kemp)
2192
2193## Version 1.5.7
2194 * Exclude colon from binary rule of yandex preset (Oleg Gaidarenko)
2195 * wikimedia: Add 'case' and 'typeof' to requireSpaceAfterKeywords (Timo Tijhof)
2196 * Correct deal with exclusion and extensions (Oleg Gaidarenko)
2197 * disallowPaddingNewlinesInBlocks: fix false negatives with newline after closing curly. (Iskren Chernev)
2198 * Include jscs-browser file to npm package (Oleg Gaidarenko)
2199 * Clarify docs of use of jscs-browser.js (Oleg Gaidarenko)
2200
2201## Version 1.5.6
2202 * Correct prebublish script (Oleg Gaidarenko)
2203
2204## Version 1.5.5
2205 * Add allowUrlComments to yandex preset (ikokostya)
2206 * Improve requireMultipleVarDecl rule (Oleg Gaidarenko)
2207 * Improve fileExtension option (Oleg Gaidarenko)
2208 * Perform file check by direct reference (Oleg Gaidarenko)
2209 * Comma not on the same line with the first operand (Oleg Gaidarenko)
2210 * Simplify doc instruction a bit (Oleg Gaidarenko)
2211 * Generate "jscs-browser.js" only during publishing (Oleg Gaidarenko)
2212 * Fix tests for requireSpaceBeforeBinaryOperators (lemmy)
2213
2214## Version 1.5.4
2215 * Fix crash caused by multiline case statements that fall through for validateIndentation rule (Mike Sherov)
2216
2217## Version 1.5.3
2218 * Add missing rules in jQuery preset (Oleg Gaidarenko)
2219 * Exclude comma operator from requireSpaceBeforeBinaryOperators rule (Oleg Gaidarenko)
2220 * Ignore ios instruments style imports (@sebv)
2221 * Various doc fixes (Christian Vuerings, Timo Tijhof, Oleg Gaidarenko)
2222
2223## Version 1.5.2
2224 * Improve binary rule (Oleg Gaidarenko)
2225 * Fix recursive descend, #445 (Oleg Gaidarenko)
2226
2227## Version 1.5.1
2228 * Version bump to address incorrectly published docs (Mike Sherov)
2229
2230## Version 1.5.0
2231 * Sticked Operators Rules: Deprecate in favor of more specific rules (Mike Sherov)
2232 * Update google preset (Oleg Gaidarenko)
2233 * Update jQuery preset (Mike Sherov)
2234 * Implement wikimedia preset (Timo Tijhof)
2235 * Impelement yandex preset (Alexander Tarmolov)
2236 * Implement fileExtensions option (Joel Brandt)
2237 * Implement requireYodaConditions rule (Oleg Gaidarenko)
2238 * Disallow Space After Line Comment: New Rule (Ben Bernard)
2239 * Require Space After Line Comment: New Rule (Ben Bernard)
2240 * Implement requireSpacesInsideParentheses (Mikko Rantanen)
2241 * MaximumLineLength: add ignoreUrlComments option which ignore comments with long urls. (Mike Sherov)
2242 * requireCamelCaseOrUpperCaseIdentifiers: add option to ignore object properties. (Mike Sherov)
2243 * MaximumLineLength: provide relaxing option for comments and/or regular expression literals. (Mike Sherov)
2244 * disallowPaddingNewlinesInBlocks: Count comments as valid tokens. (Joshua Koo)
2245 * Add new option to maximumLineLength rule (Oleg Gaidarenko)
2246 * Function expressions ignore getters and setters (Ruben Tytgat)
2247 * Add "true" as a possible value for binary/unary rules (Oleg Gaidarenko)
2248 * Improve disallowSpacesInsideObjectBrackets (Oleg Gaidarenko)
2249 * Improve disallowSpacesInsideArrayBrackets (Oleg Gaidarenko)
2250 * Improve disallowSpacesInsideArrayBrackets rule (Oleg Gaidarenko)
2251 * Improve disallowSpacesInsideObjectBrackets rule (Oleg Gaidarenko)
2252 * Improve disallowQuotedKeysInObjects rule (Oleg Gaidarenko)
2253 * Improve requireSpacesInsideObjectBrackets rule (Oleg Gaidarenko)
2254 * Improve handling comments for *SpaceAfterKeywords (Oleg Gaidarenko)
2255 * Improve requireOperatorBeforeLineBreak (Oleg Gaidarenko)
2256 * Improve defintions of operators in utils module (Oleg Gaidarenko)
2257 * Improve requireSpaceBeforePostfixUnaryOperators (Oleg Gaidarenko)
2258 * Improve disallowSpaceBeforePostfixUnaryOperators (Oleg Gaidarenko)
2259 * Improve requireSpaceAfterPrefixUnaryOperators (Oleg Gaidarenko)
2260 * Improve disallowSpaceAfterPrefixUnaryOperators (Oleg Gaidarenko)
2261 * Improve disallowSpaceAfterBinaryOperators rule (Oleg Gaidarenko)
2262 * Improve requireSpaceBeforeBinaryOperators rule (Oleg Gaidarenko)
2263 * Improve disallowSpaceBeforeBinaryOperators rule (Oleg Gaidarenko)
2264 * Improve requireSpaceAfterBinaryOperators rule (Oleg Gaidarenko)
2265 * Improve requireOperatorBeforeLineBreak rule (Oleg Gaidarenko)
2266 * Improve requireSpaceAfterPrefixUnaryOperators rule (Oleg Gaidarenko)
2267 * Improve requireOperatorBeforeLineBreak rule (Oleg Gaidarenko)
2268 * Differentiate errors for requireSpaceAfterKeywords (Oleg Gaidarenko)
2269 * Modify lint options of jshint and jscs (Oleg Gaidarenko)
2270 * Test Cleanup (Oleg Gaidarenko)
2271 * Throw error if specified preset does not exist (Oleg Gaidarenko)
2272 * utils: Remove duplicate '+=' from binaryOperators (Timo Tijhof)
2273 * Various readme fixes (Syoichi Tsuyuhara)
2274 * Provide friendly message for corrupted config (Oleg Gaidarenko)
2275 * Use new Vow API (Jordan Harband)
2276 * Update Mocha (Jordan Harband)
2277 * Update dependencies (Jordan Harband)
2278 * Various improvements to the utils module (Oleg Gaidarenko)
2279 * "null" must be a quoted key in IE 6-8 (Jordan Harband)
2280 * Change signature of findOperatorByRangeStart (Oleg Gaidarenko)
2281 * Add isTokenParenthesis method to token helper (Oleg Gaidarenko)
2282 * Improve getTokenByRangeStart method (Oleg Gaidarenko)
2283 * Correct docs for requireSpacesInsideParentheses (Oleg Gaidarenko)
2284 * readme: Clean up assignment operators (Timo Tijhof)
2285
2286## Version 1.4.5
2287 * Hotfix: Fix binary rules for "," and "=" operators (@markelog)
2288
2289## Version 1.4.4
2290 * Improve `requireSpaceAfterBinaryOperators` rule (@markelog)
2291 * Improve `disallowSpaceAfterBinaryOperators` rule (@markelog)
2292 * Improve `requireSpaceBeforeBinaryOperators` rule (@markelog)
2293 * Improve `disallowSpaceBeforeBinaryOperators` rule (@markelog)
2294 * Update google preset (@markelog)
2295 * Fixes `requirePaddingNewlinesInBlocks`: support multi-line padding (@zz85)
2296 * Update error message when no config is found (@mikesherov)
2297 * Rule `requireSpacesInConditionalExpression` (@mikesherov)
2298 * Rule `disallowSpacesInConditionalExpression` (@mikesherov)
2299 * Fixes for `validateIndentation` rule: fix more weird onevar constructs and associated indentation rules. (@mikesherov)
2300 * Fixes for `validateIndentation` rule: fix bug when IfStatement test contains a BlockStatement
2301
2302## Version 1.4.3:
2303 * Presets folder was missing in the package (@mdevils).
2304
2305## Version 1.4.2:
2306 * Rule `requireSpaceAfterKeywords`: do not fail on linebreaks (@mdevils).
2307
2308## Version 1.4.1:
2309 * Rule `disallowPaddingNewlinesInBlocks`: check for comments in the whitespace. Fixes #347 (@mikesherov).
2310 * Introduce extensions section in README (@zxqfox)
2311 * Fixes for `validateIndentation` rule: properly validate finally clauses. Fixes #311 (@mikesherov).
2312 * Fixes for `validateIndentation` rule: tests for holes in array and more complex temporary fix for it (@zxqfox).
2313 * Fixes for `validateIndentation` rule: allow for extra indents when first variable
2314 in a declaration is multi-line (@mikesherov).
2315 * Fixes for `validateIndentation` rule: prevent false positive when array elements are
2316 on same line as array opener, but array is not single line. Fixes #353 (@mikesherov)
2317 * Restructuration of lib/test files (@markelog)
2318
2319## Version 1.4.0:
2320 * Dropped `node.js` 0.8 support.
2321 * Update all dependencies to their latest versions except `vow`/`vow-fs` (@XhmikosR).
2322 * Add dependency status badges (@XhmikosR).
2323 * Advanced search for the configuration files (@markelog).
2324 * Improve `requireSpaceAfterKeywords` rule: trigger error if there is more then two spaces (@markelog).
2325 * Rule `spaceAfterKeywords`: fix up funarg issue (@markelog).
2326 * Make `requireMultipleVarDecl` rule more like onevar (@markelog).
2327 * Allow comments in parentheses for rule `disallowSpacesInsideParentheses` (@Famlam).
2328 * Extract own settings into google preset (@jzaefferer).
2329 * Rule `disallowTrailingComma` (@rxin).
2330 * Rule `requireTrailingComma` (@rxin).
2331 * Rule `disallowSpaceBeforeBlockStatements` (@rxin).
2332 * Rule `requireSpaceBeforeBlockStatements` (@rxin).
2333 * Rule `requireBlocksOnNewline` (@mikesherov).
2334 * Rule `requirePaddingNewlinesInBlock` (@mikesherov).
2335 * Rule `disallowPaddingNewlinesInBlock` (@mikesherov).
2336
2337## Version 1.3.0:
2338 * New JSCS config format: `.jscsrc`. JSON-file with comments.
2339 * Rule `requireBlocksOnNewline` (@Famlam).
2340 * Rule `requireSpacesInAnonymousFunctionExpression` (@jamesallardice).
2341 * Rule `disallowSpacesInAnonymousFunctionExpression` (@jamesallardice).
2342 * Rule `requireSpacesInNamedFunctionExpression` (@jamesallardice).
2343 * Rule `disallowSpacesInNamedFunctionExpression` (@jamesallardice).
2344 * Custom path to reporter (@Adeel).
2345 * Option `escape` for rule `validateQuote` (@mikesherov).
2346 * Fixed `validateIndentation` rule (@mikesherov).
2347 * Fixed `excludeFiles` option (@markelog).
2348 * CLI/Reporter fixes (@markelog, @am11).
2349 * Documentation fixes (@tenorok).
2350 * Minor tweaks (@XhmikosR).
2351
2352## Version 1.2.4:
2353 * Fixed typos.
2354 * Fixed `validateIndentation` rule.
2355 * Sorting errors.
2356
2357## Version 1.2.3:
2358 * New reporter: `inline` (@clochix).
2359 * Fixed for rule `requireDotNotation` (@ikokostya).
2360
2361## Version 1.2.2:
2362 * Fixed case with number for `requireDotNotation` rule (@andrewblond).
2363
2364## Version 1.2.1:
2365 * Fix in error message for rule `maximumLineLength` (@pdehaan).
2366
2367## Version 1.2.0:
2368 * Rule `requireCommaBeforeLineBreak` (@mikesherov).
2369 * Rule `disallowCommaBeforeLineBreak` (@mikesherov).
2370 * Rule `requireDotNotation` (@mikesherov).
2371 * Rule `requireCamelCaseOrUpperCaseIdentifiers` (@mikesherov).
2372 * Rule `disallowEmptyBlocks` (@mikesherov).
2373 * Rule `validateQuoteMarks` (@mikesherov).
2374 * Rule `requireParenthesesAroundIIFE` (@mikesherov).
2375 * Rule `requireOperatorBeforeLineBreak` (@mikesherov).
2376 * Rule `requireCapitalizedConstructors` (@mikesherov).
2377 * Rule `disallowDanglingUnderscores` (@mikesherov).
2378 * Rule `disallowTrailingWhitespace` (@mikesherov).
2379 * Сurly brace checking for 'case' and 'default' statements (@mikesherov).
2380 * Rule `maximumLineLength` (@mikesherov).
2381 * Rule `disallowMixedSpacesAndTabs` (@mikesherov).
2382 * Rule `validateIndentation` (@mikesherov).
2383 * README: Reformat to use headings (@nschonni).
2384 * ES3 future reserved words added to tokenIsReservedWord() (@maxatwork).
2385 * Fixes for: requireSpaceBeforePostfixUnaryOperators, requireSpaceAfterPrefixUnaryOperators,
2386 disallowSpaceBeforePostfixUnaryOperators, disallowSpaceAfterPrefixUnaryOperators (@mdevils).
2387 * Rule `disallowMultipleLineStrings` (@mikesherov).
2388
2389## Version 1.0.15:
2390 * junit reporter (@markelog).
2391
2392## Version 1.0.14:
2393 * Option `additionalRules` (@markelog).
2394 * disallowQuotedKeysInObjects: Exclusion array (@nschonni).
2395
2396## Version 1.0.13:
2397 * Option `validateLineBreaks` (@twoRoger).
2398
2399## Version 1.0.12:
2400 * Fixes for jsdoc params.
2401
2402## Version 1.0.11:
2403 * Prefix unary rules: `disallowSpaceAfterPrefixUnaryOperators`, `requireSpaceAfterPrefixUnaryOperators` (@mishaberezin).
2404 * Postfix unary rules: `disallowSpaceBeforePostfixUnaryOperators`, `requireSpaceBeforePostfixUnaryOperators` (@mishaberezin).
2405
2406## Version 1.0.10:
2407 * Reporter support — `console`, `text`, `checkstyle`.
2408
2409## Version 1.0.9:
2410 * Browser-compatible version.
2411 * Fix for `disallowMultipleLineBreaks` option to report only once per each sequence of line breaks.
2412 * Fix for `disallowMultipleLineBreaks` option to work properly when CRLF line break is used.
2413
2414## Version 1.0.8:
2415 * Fixes for `safeContextKeyword`.
2416
2417## Version 1.0.7:
2418 * Disallow spaces inside parentheses (@ignovak).
2419
2420## Version 1.0.6:
2421 * Convert tabs into spaces (@markelog).
2422 * Report illegal space between nested closing curly braces (@twoRoger).
2423 * Use absolute path to config when specified (@vtambourine).
2424 * safeContextKeyword option to check "var that = this" expressions (@doochik).
2425
2426## Version 1.0.4-1.0.5:
2427 * Fixed mistype `disallowMulipleVarDecl` -> `disallowMultipleVarDecl`.
2428 * Fixed error for invalid symlink checking.
2429
2430## Version 1.0.3:
2431 * Changed behaviour for `disallowMultipleVarDecl` options. Now accepts multiple var decl in `for` decl.
2432
2433## Version 1.0.2:
2434 * Option `requireSpacesInsideArrayBrackets` (@mishanga).
2435
2436## Version 1.0.1:
2437 * Not reporting about extra quotes for zero-starting numbers in `disallowQuotedKeysInObjects`.
2438
2439## Version 1.0.0:
2440 * Camel-case configuration options.
2441 * Option `requireAlignedObjectValues`.
2442 * Option `requireSpaceAfterObjectKeys`.
2443 * JSDoc for core functions and classes.
2444 * Fix error position for disallowSpacesInsideObjectBrackets and disallowSpacesInsideArrayBrackets.
2445
2446
2447## Version 0.0.12:
2448 * Fix in `disallowSpaceAfterObjectKeys` location reporting.
2449
2450## Version 0.0.11:
2451 * Option `disallowSpaceAfterObjectKeys`.
2452 * Option `disallowSpacesInsideArrayBrackets`.
2453 * Do not automatically exclude hidden files.
2454
2455## Version 0.0.10:
2456 * Fix in `disallowQuotedKeysInObjects`.
2457
2458## Version 0.0.9:
2459 * Fix in `disallowQuotedKeysInObjects`.
2460
2461## Version 0.0.8:
2462 * Fix in `requireSpacesInsideObjectBrackets`.
2463 * Option `disallowQuotedKeysInObjects`.
2464
2465## Version 0.0.7:
2466 * Option `requireSpacesInsideObjectBrackets`.
2467 * Option `disallowSpacesInsideObjectBrackets`.
2468
2469## Version 0.0.6:
2470 * Fixes incorrent checkPath behavior.
2471
2472## Version 0.0.5:
2473 * .jshintrc config.
2474 * Error message format fixes.
2475
2476## Version 0.0.4:
2477 * Option `disallowYodaConditions`.
2478 * Option `requireMultipleVarDecl`.
2479
2480## Version 0.0.3:
2481 * Option `excludeFiles`, which accepts patterns.
2482
2483## Version 0.0.2:
2484 * Link to parent nodes.
2485
2486## Version 0.0.1:
2487 * Initial implementation.