UNPKG

111 kBMarkdownView Raw
1# Change Log
2
3## v5.12.0
4
5## :tada: Features
6
7- [feature] Configure format from file (#4155)
8- [feature] Make cli expect array for rules dir (#3788)
9- [feature] Set js rules to all valid active rules (#3641)
10- [improvement] Add tests for typescript@2.9 and typescript@3.0 (#4053)
11- [new-fixer][`type-literal-delimiter`](https://palantir.github.io/tslint/rules/type-literal-delimiter/) (#3964)
12- [new-rule-option][`whitespace`](https://palantir.github.io/tslint/rules/whitespace/) Add whitespace rule for open braces (#4068)
13- [new-rule-option][`file-name-casing`](https://palantir.github.io/tslint/rules/file-name-casing/): Add file name whitelist (#4206)
14- [new-rule-option][`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/): `locale-compare` (#4193)
15- [new-rule-option][`strict-boolean-expressions`](https://palantir.github.io/tslint/rules/strict-boolean-expressions/) adds `allow-enum` to allow using enums in boolean expressions (#3604)
16- [new-rule-option][`import-blacklist`](https://palantir.github.io/tslint/rules/import-blacklist/): support blacklisting specific named exports (#3926)
17- [new-rule-option][`type-literal-delimiter`](https://palantir.github.io/tslint/rules/type-literal-delimiter/): Add `{ singleLine: "always" | "never"}` (#3964)
18- [new-rule-option][`file-name-casing`](https://palantir.github.io/tslint/rules/file-name-casing/): Add `snake-case` option (#4081)
19- [new-rule-option][`file-header`](https://palantir.github.io/tslint/rules/file-header/): Enforce Blank Line after File Header (#3740)
20- [new-rule][`ban-ts-ignore`](https://palantir.github.io/tslint/rules/ban-ts-ignore/) (#3728)
21- [new-rule][`function-constructor`](https://palantir.github.io/tslint/rules/function-constructor/) (#4198)
22- [new-rule][`increment-decrement`](https://palantir.github.io/tslint/rules/increment-decrement/) (#3575)
23- [new-rule][`no-default-import`](https://palantir.github.io/tslint/rules/no-default-import/) (#4023)
24- [new-rule][`unnecessary-constructor`](https://palantir.github.io/tslint/rules/unnecessary-constructor/) (#3647)
25- [new-rule][`comment-type`](https://palantir.github.io/tslint/rules/comment-type/) (#4008)
26- [new-rule][`unnecessary-bind`](https://palantir.github.io/tslint/rules/unnecessary-bind/) (#3588)
27
28## :hammer_and_wrench: Bugfixes & enhancements
29
30- [api] Allow `exclude` to work with node API (#4143)
31- [api] Upgrade TSLint to support TS 3.1 (#4274)
32- [bugfix] Allow whitelisted modules to start with `@` symbol (#4192)
33- [bugfix] Added exception for generators in [`return-undefined`](https://palantir.github.io/tslint/rules/return-undefined/) rule (#4370)
34- [bugfix] Allow unknown in 'no-object-literal-type-assertion' rule. (#4362)
35- [bugfix] Completed docs rule can check single-line comments (#3841)
36- [bugfix][`prefer-method-signature`](https://palantir.github.io/tslint/rules/prefer-method-signature/): Correct the auto-fix code of rule, now capable to handle multiline signature. (#4066)
37- [bugfix] Default logger.error should log to stderr. (#3982)
38- [bugfix] Fixes an issue where TSLint doesn't correctly resolve packages in a `node_modules` folder that are symlinked to another location where their dependencies are satisfied. (#4295)
39- [bugfix] Fix configuration tests when comparing rules (#4346)
40- [bugfix] Fix semicolon: Cannot read property 'initializer' of undefined (#4351)
41- [bugfix] Fix whitespace rule in importClause with 'as' statement (#4249)
42- [bugfix][`no-invalid-this`](https://palantir.github.io/tslint/rules/no-invalid-this/): fixes false positives on method-like syntax and false negatives on nested functions (#4034)
43- [bugfix][`one-line`](https://palantir.github.io/tslint/rules/one-line/): Check block in a case clause (#3619)
44- [bugfix][`whitespace`](https://palantir.github.io/tslint/rules/whitespace/) Don't require space between import and paren with in type imports (#4243)
45- [bugfix] remove [`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) from `tslint:all` (#4079)
46- [bugfix][`callable-types`](https://palantir.github.io/tslint/rules/callable-types/) support interfaces containing a single construct signature (#4291) (#4352)
47- [bugfix][`ordered-imports`](https://palantir.github.io/tslint/rules/ordered-imports/): Setting `import-sources-order: any` no longer invalidates `grouped-imports: true` (#4374)
48- [develop] Add issue templates (#4028)
49- [develop] Add test for 3.0 (#4119)
50- [develop] Changes the node version from 4 to 6 for TS 2.1 tests. (#4282)
51- [develop] Fix prettier command in package.json (#4275)
52- [develop] Fix semantic merge break from #4374 and #3733 (#4378)
53- [develop] Fix typo in launch.json (#4287)
54- [develop] Prettier (#4012)
55- [develop] Re-ran Prettier on source files again, with some more ignores (#4270)
56- [develop] Update 'json-stringify-pretty-compact' to 1.2.0 and remove unnecessary type declaration (#4371)
57- [develop] Upgrade prettier and run over all files (#4214)
58- [docs] "< 0" means less than zero, not greater than (#4183)
59- [docs] Added badges for dependencies status (#4160)
60- [docs] Additional code examples for rules (#3869)
61- [docs] Clarify no-shadowed-variable doc (#4347)
62- [docs] Fix docs typo (#4165)
63- [docs] Fix docs typo (#4182)
64- [docs] Fix typo in index.md (#4242)
65- [docs] Fix typos in formatter descriptions (#4288)
66- [docs] Fixed typo in documentation (#4047)
67- [docs] Includes new name Azure DevOps for VSO (#4289)
68- [docs] Typo correction in no-unused-expression (#4322)
69- [docs] Update documentation to reflect changes made in #2229. (#4336)
70- [docs] Update stylish example (#4095)
71- [docs] Use latest docs deps to avoid vulnerable libs (#4366)
72- [docs] prefer-object-spread: this is new to ES2018, not ES2015 (#4321)
73- [documentation] Update configuration documentation to include array syntax (#4258)
74- [enhancement] Add `homepage` to package.json (#4101)
75- [enhancement] Add esSpecCompliant: true to recommended trailing-comma config (#4072)
76- [enhancement] Add new tests to workflows (#4054)
77- [enhancement] Add quiet flag to hide warnings (#4025)
78- [enhancement] Don't flag unmatched ${ in no-invalid-template-strings (#3769)
79- [enhancement] Show offending value in 'no-magic-numbers' error message (#4332)
80- [enhancement][`ordered-imports`](https://palantir.github.io/tslint/rules/ordered-imports/): When `grouped-imports` option of the rule is set, the fact that imports of the same type are all in one group is also checked. (#3733)
81- [enhancement] Yaml parser now uses default schema, allowing for `<<:` to be used to merge anchors (#4350)
82- [enhancement] Improve JUnit formatter (#4327)
83- [enhancement] completed-docs: check properties and methods in interfaces (#4032)
84- [enhancement] file-name-casing-rule supports regex expression for matching file (#4284)
85- [enhancement] prose formatter uses `line:column` instead of `[line, column]` (#4222)
86- [rule-change] Add "backtick" option for quotemark (#4029)
87- [rule-change] Allow void expressions in binary expressions (#4323)
88
89Thanks to our contributors!
90
91- Shinigami
92- Matthew Herbst
93- Joshua R
94- John Wiseheart
95- Mitchell Wills
96- Eric Ferreira
97- Daniel Reichhart
98- Rui
99- Pavel Birukov
100- Brian Schlenker
101- Michael Black
102- Andy Hanson
103- atsu85
104- PomanoB
105- Oleg Vaskevich
106- Daniel McNab
107- Jan Pilzer
108- Sebastian Silbermann
109- Michael Lavina
110- reduckted
111- Ryan Waskiewicz
112- Bowen Ni
113- Josh Goldberg
114- Erik
115- Nathan
116- Kevin Verdieck
117- Joe Chung
118- Peter Safranek
119- Xavier Downs
120- Igor Ovsiannikov
121- RyosukeFukushima
122- Andrew Boyton
123- samuela
124- stefanhamburger
125- Carsten Dietzel
126- Jakob Warkotsch
127- Karthick Manoharan
128- Ian Clanton-Thuon
129- Yordis Prieto
130- Mike Frysinger
131- Dario Banfi
132- Gérôme Grignon
133- Antony74
134- Morgan Zolob
135- Young Min Kim
136- rrogowski
137- Eric Anderson
138- Simon Marchi
139- ulrichb
140- Marvin Altemeier
141- Ifiok Jr
142- Andrew MacLeay
143- Ethan
144- Dan Homola
145- NN
146- Roman Rogowski
147
148## v5.11.0
149
150## :warning: Deprecations
151
152- [deprecation][`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) is deprecated because typescript now covers most of its functionality (#3919)
153
154## :tada: Features
155
156- [new-rule][`file-name-casing`](https://palantir.github.io/tslint/rules/file-name-casing/) (#3978)
157- [new-fixer] Add fixer for [`switch-final-break`](https://palantir.github.io/tslint/rules/switch-final-break/) (#3615)
158- [new-fixer] Implemented fixer for [`member-ordering`](https://palantir.github.io/tslint/rules/member-ordering/) and added corresponding tests. (#3935)
159- [new-rule-option] Add whitelist for [`no-implicit-dependencies`](https://palantir.github.io/tslint/rules/no-implicit-dependencies/) (#3979)
160
161## :hammer_and_wrench: Bugfixes & enhancements
162
163- [bugfix][`no-use-before-declare`](https://palantir.github.io/tslint/rules/no-use-before-declare/) Fixes false positives when using the destructuring syntax (#3761) (#3876)
164- [bugfix] Fix Copyright: @license JSDoc tag was missing (#3879)
165- [bugfix] Fix missing newline at end of file (#3896)
166- [bugfix] allow-empty-functions option of [`no-empty`](https://palantir.github.io/tslint/rules/no-empty/) rule is now properly respecting empty methods (#3897)
167- [bugfix][`no-magic-numbers`](https://palantir.github.io/tslint/rules/no-magic-numbers/) - support for negative zero (#3903)
168- [bugfix] Handle tsconfig.json errors without using JSON.stringify (#3908)
169- [bugfix] Fix CI: [`no-implicit-dependencies`](https://palantir.github.io/tslint/rules/no-implicit-dependencies/) test failure; typescript@next failure (#4019)
170- [bugfix] Fix edge case in [`no-console`](https://palantir.github.io/tslint/rules/no-console/) rule (#4041)
171- [docs] Fix typos in the [`no-floating-promises`](https://palantir.github.io/tslint/rules/no-floating-promises/) rule docs. (#3886)
172- [docs] Updated [`prefer-while`](https://palantir.github.io/tslint/rules/prefer-while/) docs to be semantically correct (#3888)
173- [docs] Fix link to configuration page (#3891)
174- [docs] Fix docs typo (#3898)
175- [docs] Fix docs typo (#3910)
176- [enhancement] Turn on strictPropertyInitialization for src/ and test/ (#3924)
177- [enhancement] Use Buffer.allocUnsafe instead of the deprecated new Buffer() (#3985)
178- [enhancement] Improve [`radix`](https://palantir.github.io/tslint/rules/radix/) rule checks (#3901)
179- [enhancement] Output +/- on diff so added/removed empty lines are visible. (#3973)
180- [rule-change][`no-implicit-dependencies`](https://palantir.github.io/tslint/rules/no-implicit-dependencies/) now always considers peer dependencies (#3875)
181
182Thanks to our contributors!
183
184- Bowen Ni
185- Peter Safranek
186- Saugat Acharya
187- Jason Mendes
188- Ryan Waskiewicz
189- Dariusz Rumiński
190- Xinhu Liu
191- Rado Kirov
192- aervin\_
193- Josh Goldberg
194- mertdeg2
195- Jason Killian
196- Adrian Leonhard
197- david-cannady
198- Andy Russell
199- Tibor Blenessy
200- Andrew Crites
201- Pavel Birukov
202- shalomdotnet
203
204## v5.10.0
205
206## :tada: Features
207
208- [new-rule][`prefer-while`](https://palantir.github.io/tslint/rules/prefer-while/) (#3750)
209- [new-fixer][`comment-format`](https://palantir.github.io/tslint/rules/comment-format/) (#3845)
210- [new-rule-option] `"allow-empty-functions"` for [`no-empty`](https://palantir.github.io/tslint/rules/no-empty/) rule (#3624)
211- [new-rule-option] New options for [`promise-function-async`](https://palantir.github.io/tslint/rules/promise-function-async/) specifying what kinds of functions to check (#3807)
212
213## :hammer_and_wrench: Bugfixes & enhancements
214
215- [bugfix][`file-header`](https://palantir.github.io/tslint/rules/file-header/) rule plays nice with [`no-trailing-whitespace`](https://palantir.github.io/tslint/rules/no-trailing-whitespace/) rule (#3802)
216- [bugfix][`no-unbound-method`](https://palantir.github.io/tslint/rules/no-unbound-method/) rule allows square bracket property access (#3610)
217- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/) no longer marks native JSX elements as unsafe (#3699)
218- [enhancement][`file-header`](https://palantir.github.io/tslint/rules/file-header/) auto-fixes use '!' character to ensure header stays above imports (#3741)
219- [enhancement] Better error messages if a rule crashes (#3836)
220- [enhancement] Better error messages when no valid rules are specified (#3729)
221- [enhancement] Better lint messages for unused imports in [`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) rule (#3831)
222- [docs] Improve documentation of cli flag --project (#3703)
223- [docs] Added short rationales for about thirty rules (#3734)
224- [docs] Added optional capability to provide code examples in rules' metadata (#3602)
225- [docs] Many small docs fixes and tweaks from many great contributors!
226
227Thanks to our contributors!
228
229- Achim Weimert
230- BB9z
231- Blair Zajac
232- Chia-Lun Wu (Leo)
233- Ethan
234- Janis Koehr
235- Josh Goldberg
236- Julian Verdurmen
237- Lucas Sloan
238- Mark Vincze
239- Martin Möhwald
240- Oliver Joseph Ash
241- Pichest Wongsiripiphat
242- Rafael Santana
243- Ruben Bridgewater
244- Ryan Waskiewicz
245- Sehrope Sarkuni
246- Suchan Lee
247- Victor Belozyorov
248- aervin\_
249- cwgorman
250- felipeissa
251- jishi9
252
253## v5.9.1
254
255## :hammer_and_wrench: Bugfixes
256
257- [bugfix] Removed extraneous deprecation warning produced when using `tslint:recommended` or `tslint:latest` by disabling `typeof-compare` in these rulesets. (#3639)
258- [bugfix] Resolve directories as absolute paths when validating custom `rulesDirectory` paths, which fixes usage with tslint-loader. (#3640)
259
260## v5.9.0
261
262## :warning: Deprecations
263
264- [deprecation] Several utility functions from `src/language/utils.ts` have been deprecated (#3476)
265- [deprecation] Linting non-existent files now outputs a warning. This will be an error in TSLint 6. (#3313)
266
267## Configuration inheritance changes
268
269Significant changes have been made to configuration inheritance to address a long-standing UX issue around `defaultSeverity`: #2569.
270
271`defaultSeverity` defined in a `tslint.json` file will now override the `defaultSeverity` value defined in any configurations you are extending.
272This means that any rules specified in the base configurations can now take on a new `defaultSeverity` if you so choose. If you extend multiple
273configuration files, the `defaultSeverity` defined in the last one wins.
274
275In practice, this allows users to, for example, more easily use the built-in TSLint configurations (`tslint:recommended`, `tslint:latest`, `tslint:all`)
276and treat all errors as warnings instead of errors.
277
278For more details, see the relevant PRs:
279
280- Override `defaultSeverity` defined in extended configs (#3449)
281- Inherit defaultSeverity and apply it to preceding base configs (#3530)
282
283## :tada: Features
284
285- [feature] Support yaml configuration files (#1598) (#3433)
286- [new-fixer][`file-header`](https://palantir.github.io/tslint/rules/file-header/) (#3475)
287- [new-rule][`no-dynamic-delete`](https://palantir.github.io/tslint/rules/no-dynamic-delete/) (#3573)
288- [new-rule][`prefer-readonly`](https://palantir.github.io/tslint/rules/prefer-readonly/) (#2896)
289- [new-rule][`newline-per-chained-call`](https://palantir.github.io/tslint/rules/newline-per-chained-call/) (#3278)
290- [new-rule-option] `"temporalDeadZone"` for [`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) to ignore shadowing in the temporal dead zone of classes, parameters, enums and variables declared with `let` or `const`
291 (#3389)
292- [new-rule-option] `"shorthand-first"` for [`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/) (#3607)
293- [new-rule-option] Add support for an ignore pattern for [`max-line-length`](https://palantir.github.io/tslint/rules/max-line-length/) (#3099)
294
295## :hammer_and_wrench: Bugfixes & enhancements
296
297- [bugfix] Update commander.js dependency to prevent users from transitively installing a buggy 2.12.0 release (#3510)
298- [bugfix] `--project` excludes all files of external dependencies (#3320)
299- [bugfix] Show errors when `tsconfig.json` is invalid (#3410)
300- [bugfix][`no-implicit-dependencies`](https://palantir.github.io/tslint/rules/no-implicit-dependencies/) don't crash on malformed package.json (#3373)
301- [bugfix][`strict-type-predicates`](https://palantir.github.io/tslint/rules/strict-type-predicates/) allows comparing typeof result with non-literals (#3542)
302- [bugfix][`no-redundant-jsdoc`](https://palantir.github.io/tslint/rules/no-redundant-jsdoc/) fixed crash on unhandled tag (#3414)
303- [bugfix][`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/) fixed regression that effectively disabled the rule with `\r\n` line breaks (#3427)
304- [bugfix][`curly`](https://palantir.github.io/tslint/rules/curly/) fixer now correctly handles comments (#3473)
305- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/) fixed false-positive with namespaced types (#3487)
306- [bugfix] Removed potentailly dangerous fixer for [`no-any`](https://palantir.github.io/tslint/rules/no-any/) (#3486)
307- [bugfix][`no-unnecessary-type-assertion`](https://palantir.github.io/tslint/rules/no-unnecessary-type-assertion/) fixed false negatives for types with numeric keys (#3468)
308- [bugfix][`callable-types`](https://palantir.github.io/tslint/rules/callable-types/) adds parentheses when fixing a type literal inside an array type (#3440)
309- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/) allows spreading an `any` value into an object (#3439)
310- [bugfix] no unnecessary whitespace before argument in callback functions fixed with [`arrow-parens`](https://palantir.github.io/tslint/rules/arrow-parens) fixer (#3618)
311- [bugfix][`prefer-const`](https://palantir.github.io/tslint/rules/prefer-const/) false negative with index signature named like a variable (#3385)
312- [bugfix][`whitespace`](https://palantir.github.io/tslint/rules/whitespace) rule checks property declarations if `"check-decl"` is enabled (#3546)
313- [bugfix] Using ternary operator for calling super() now passes [`no-duplicate-super`](https://palantir.github.io/tslint/rules/no-duplicate-super) rule. (#3544)
314- [bugfix][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) now excludes declaration files and ambient modules (#3387)
315- [bugfix][`no-duplicate-imports`](https://palantir.github.io/tslint/rules/no-duplicate-imports) Allow duplicate imports from separate ambient module declarations (#3398)
316- [bugfix][`await-promise`](https://palantir.github.io/tslint/rules/await-promise/) correctly recognises classes extending Promise (#3383)
317- [bugfix][`prefer-conditional-expression`](https://palantir.github.io/tslint/rules/prefer-conditional-expression/): don't repeat error on nested if statements (#3528)
318- [bugfix][`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/): don't require documentation on methods in object literals (#3532)
319- [bugfix][`one-line`](https://palantir.github.io/tslint/rules/one-line/) fixed crash on syntax error in class or interface (#3538)
320- [bugfix][`no-redundant-jsdoc`](https://palantir.github.io/tslint/rules/no-redundant-jsdoc/) allow `@template` tag if it has a description (#3415)
321- [bugfix] Fix condition for deprecation of [`typeof-compare`](https://palantir.github.io/tslint/rules/typeof-compare) (#3429)
322- [enhancement] Better error message for files not contained in the project (#3313)
323- [enhancement] `"properties"` option for [`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/) rule now checks getter and setter accessors. (#3497)
324- [enhancement][`no-magic-numbers`](https://palantir.github.io/tslint/rules/no-magic-numbers) ignores parseInt radix parameter (#3536)
325- [enhancement] Avoid duplicate I/O when using `--project` option (#3313)
326- [enhancement] clicking the filename in `stylish`-formatter's output jumps to the first failure in that file. (#3491)
327- [enhancement][`ban-comma-operator`](https://palantir.github.io/tslint/rules/ban-comma-operator/) ignores comma operator inside for-loop incrementor (#3485)
328- [enhancement][`space-within-parens`](https://palantir.github.io/tslint/rules/space-within-parens/) updated to always allow empty parentheses `()`. (#3513)
329- [enhancement] Better error message syntax for [`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/) modifier lists (#3379)
330- [enhancement] Improve failure message & docs for [`ban-comma-operator`](https://palantir.github.io/tslint/rules/ban-comma-operator/) (#3384)
331- [enhancement] Output code warnings in yellow instead of red for codeFrame formatter (#3402)
332- [enhancement] Converted [`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs) rule to use a function instead of a walker (#3466)
333- [docs][`ban-comma-operator`](https://palantir.github.io/tslint/rules/ban-comma-operator/): fix metadata, list as "functionality" rule (#3612)
334- [docs] Enhance [`no-use-before-declare`](https://palantir.github.io/tslint/rules/no-use-before-declare/) documentation to clarify the rule's status (#3520)
335- [docs] Enhance [`await-promise`](https://palantir.github.io/tslint/rules/await-promise/) options documentation (#3519)
336- [docs] Add `hasFix` metadata for the [`indent`](https://palantir.github.io/tslint/rules/indent) rule (#3529)
337- [docs] Clearer rule description for [`no-irregular-whitespace`](https://palantir.github.io/tslint/rules/no-irregular-whitespace) (#3627)
338
339Thanks to our contributors!
340
341- Klaus Meinhardt
342- Josh Goldberg
343- Chris Barr
344- Nathan Shively-Sanders
345- Jeremy Morton
346- Sergey Koshechkin
347- Daniel Kucal
348- Eric Smekens
349- Johannes Choo
350- Elena Vilchik
351- Eugene Timokhov
352- Carlo Bottiglieri
353- reduckted
354- Glavin Wiechert
355- jbsingh
356- Mateusz Witkowski
357- HideDev
358- Bruno Lemos
359- aervin\_
360- Roman
361- Ryan Waskiewicz
362
363## v5.8.0
364
365## :warning: Deprecations
366
367- [deprecation][`typeof-compare`](https://palantir.github.io/tslint/rules/typeof-compare/) is deprecated because typescript already does that check (#3286)
368- [deprecation] CLI argument `--type-check` is no longer necessary and will be removed in the next major version (#3322)
369
370## Updates to `tslint:latest` configuration
371
372```diff
373+ "ban-comma-operator": true,
374+ "jsdoc-format": {
375+ options: "check-multiline-start",
376+ },
377+ "no-duplicate-switch-case": true,
378+ "no-implicit-dependencies": true,
379+ "no-return-await": true,
380```
381
382## :tada: Features
383
384- [feature] Added `linterOptions` configuration field to `tslint.json`, which supports a list of `exclude` globs to disable linting for a subset of files (#2409)
385- [new-rule][`no-return-await`](https://palantir.github.io/tslint/rules/no-return-await/) (#3233)
386- [new-rule][`no-redundant-jsdoc`](https://palantir.github.io/tslint/rules/no-redundant-jsdoc/) (#2754)
387- [new-rule][`no-duplicate-switch-case`](https://palantir.github.io/tslint/rules/no-duplicate-switch-case/) (#2937)
388- [new-rule][`no-implicit-dependencies`](https://palantir.github.io/tslint/rules/no-implicit-dependencies/) (#3343)
389- [new-rule][`no-unnecessary-class`](https://palantir.github.io/tslint/rules/no-unnecessary-class/) (#3119)
390- [new-rule][`ban-comma-operator`](https://palantir.github.io/tslint/rules/ban-comma-operator/) (#3250)
391- [new-fixer][`one-line`](https://palantir.github.io/tslint/rules/one-line/) (#3200)
392- [new-fixer][`curly`](https://palantir.github.io/tslint/rules/curly/) (#3262)
393- [new-rule-option][`jsdoc-format`](https://palantir.github.io/tslint/rules/jsdoc-format/) adds option `"check-multiline-start"` to enforce the first line of a multiline JSDoc comment to be empty. (#3181)
394- [new-rule-option][`trailing-comma`](https://palantir.github.io/tslint/rules/trailing-comma/) adds option `"esSpecCompliant"` to make it compatible with the ES spec regarding trailing commas after object/array rest and rest parameters. (#3176)
395- [new-rule-option] `"check-parameter-property"` option for [`member-access`](https://palantir.github.io/tslint/rules/member-access/) rule (#3325)
396- [new-rule-option] `"strict-bound-class-methods"` option for [`semicolon`](https://palantir.github.io/tslint/rules/semicolon/) rule (#3294)
397- [new-rule-option] `"grouped-imports"` option for [`ordered-imports`](https://palantir.github.io/tslint/rules/ordered-imports/) rule (#3138)
398- [new-rule-option] `"ignore-blank-lines"` option for [`no-trailing-whitespace`](https://palantir.github.io/tslint/rules/no-trailing-whitespace/) rule (#3346)
399- [new-rule-option] `"never"` option for [`object-literal-shorthand`](https://palantir.github.io/tslint/rules/object-literal-shorthand/) disallows shorthand notation (#3268)
400- [new-rule-option] `"exclude-class-expressions"` option for [`max-classes-per-file`](https://palantir.github.io/tslint/rules/max-classes-per-file/) rule (#3281)
401- [new-rule-option][`no-unnecessary-type-assertion`](https://palantir.github.io/tslint/rules/no-unnecessary-type-assertion/) supports a whitelist of types to ignore (#3257)
402- [new-rule-option] `"module-source-path"` for [`ordered-imports`](https://palantir.github.io/tslint/rules/ordered-imports/) allows sorting imports by trailing end of path (#3178)
403- [new-formatter] JUnit (#3194)
404
405## :hammer_and_wrench: Bugfixes & enhancements
406
407- [bugfix][`no-empty-interface`](https://palantir.github.io/tslint/rules/no-empty-interface/) allows providing type arguments for extended type (#3260)
408- [bugfix] Fixed line switches to not disable failures in the next line following the disabled line (#3177)
409- [bugfix][`return-undefined`](https://palantir.github.io/tslint/rules/return-undefined/) handles union return types in async functions (#3298)
410- [bugfix][`deprecation`](https://palantir.github.io/tslint/rules/deprecation/) checks correct constructor overload (#3203)
411- [bugfix][`return-undefined`](https://palantir.github.io/tslint/rules/return-undefined/) declared return type takes precedence over contextual type (#3298)
412- [bugfix] Correctly mark `inputFilePath` as an optional parameter in `Configuration.findConfiguration()` (#3195)
413- [bugfix][`return-undefined`](https://palantir.github.io/tslint/rules/return-undefined/) fixed regressions: once again allows anything if return type is `any` (#3298)
414- [bugfix][`only-arrow-functions`](https://palantir.github.io/tslint/rules/only-arrow-functions/) allow function if `this` is used in parameter initializer (#3315)
415- [bugfix][`no-conditional-assignment`](https://palantir.github.io/tslint/rules/no-conditional-assignment/): exclude intentional assignments, e.g. inside functions (#2629)
416- [bugfix][`no-angle-bracket-type-assertion`](https://palantir.github.io/tslint/rules/no-angle-bracket-type-assertion/) fixer adds parentheses when necessary (#3301)
417- [bugfix][`no-angle-bracket-type-assertion`](https://palantir.github.io/tslint/rules/no-angle-bracket-type-assertion/) fixed order when autofixing consecutive assertions (#3301)
418- [bugfix] `vso` formatter no longer duplicates output for fixed failures (#3348)
419- [bugfix][`no-unbound-method`](https://palantir.github.io/tslint/rules/no-unbound-method/): Allow negation of method (#3349)
420- [bugfix][`arrow-parens`](https://palantir.github.io/tslint/rules/arrow-parens/) with option `"ban-single-arg-parens"` no longer produces invalid code when fixed (#3247)
421- [bugfix] Fixed regression where the lookup of `tslint.json` stopped at the current directory. (#3309)
422- [bugfix] `--test` works correctly with any `compilerOptions.target` (#3296)
423- [bugfix] `whitepace` handles files with BOM and other irregular whitespace (#3305)
424- [bugfix][`callable-types`](https://palantir.github.io/tslint/rules/callable-types/) auto fix produces invalid results (#3342)
425- [bugfix][`no-string-literal`](https://palantir.github.io/tslint/rules/no-string-literal/) correctly fix property names with leading underscores (#3184)
426- [bugfix][`variable-name`](https://palantir.github.io/tslint/rules/variable-name/) fixed crash on empty variable name (#3292)
427- [bugfix][`trailing-comma`](https://palantir.github.io/tslint/rules/trailing-comma/) fixed crash on arrow function without parens (#3246)
428- [bugfix] Fix [`space-before-function-paren`](https://palantir.github.io/tslint/rules/space-before-function-paren/) for anonymous/arrow generic functions (#3085)
429- [bugfix] Removed warning printed to console when using the [`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) along with the `noUnusedLocals` and `noUnusedParameters` compiler options (#3227)
430- [bugfix][`no-invalid-this`](https://palantir.github.io/tslint/rules/no-invalid-this/) ignores functions with a `this` param (#3267)
431- [enhancement] Sort failures by line and character for formatters (#3345)
432- [enhancement][`import-blacklist`](https://palantir.github.io/tslint/rules/import-blacklist/) also checks exports and dynamic imports (#3258)
433- [enhancement][`no-conditional-assignment`](https://palantir.github.io/tslint/rules/no-conditional-assignment/) added check for conditional (ternary) expressions (#2629)
434- [enhancement] Allow [`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/) to list doc tags that mark a node as not requiring a documentation body. Tags can also provide a regexp matcher to validate that their contents are docs-valid. (#2415)
435- [enhancement][`await-promise`](https://palantir.github.io/tslint/rules/await-promise/) enforces that `for-await-of` is only used with `AsyncIterable` (#3297)
436- [enhancement][`one-line`](https://palantir.github.io/tslint/rules/one-line/) checks type alias declarations (#3200)
437- [enhancement][`deprecation`](https://palantir.github.io/tslint/rules/deprecation/) checks object destructuring (#3318)
438- [enhancement][`no-submodule-imports`](https://palantir.github.io/tslint/rules/no-submodule-imports/) also checks exports (#3258)
439- [enhancement][`restrict-plus-operands`](https://palantir.github.io/tslint/rules/restrict-plus-operands/): More specific error message when arguments include strings (#3220)
440- [enhancement][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/) checks more expressions, for example destructuring, `yield`, property initializer (#3196)
441- [enhancement][`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/): allow grouping of object properties via additional blank lines when using alphabetical ordering. (#3191)
442- [enhancement] Migrated CLI from using `colors` module to `chalk` module (#3171)
443- [enhancement][`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) applies the ignorePattern to imports (#3187)
444
445Thanks to our contributors!
446
447- Klaus Meinhardt
448- Charles Samborski
449- Donald Pipowitch
450- Josh Goldberg
451- mmkal
452- Erik
453- Csaba Miklos
454- Dominik Moritz
455- Khalid Saifullah
456- Lukas Spieß
457- Merott Movahedi
458- Bowen Ni
459- ksvitkovsky
460- Hutson Betts
461- Caleb Eggensperger
462- Brent Erickson
463- Trivikram
464- Brandon Furtwangler
465- Pavel Zet
466- aervin\_
467- Holger Jeromin
468- Danny Guo
469- Jeremy Morton
470- Cyril Gandon
471- Andy Hanson
472- yadan
473
474## v5.7.0
475
476## :tada: New rules, options, and fixers
477
478- [new-rule][`no-parameter-reassignment`](https://palantir.github.io/tslint/rules/no-parameter-reassignment/) (#3045)
479- [new-rule-option]: [`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/): Add `match-declaration-order` option (#2829)
480- [new-rule-option] `check-type-operator` for [`whitespace`](https://palantir.github.io/tslint/rules/whitespace/) rule (#3083)
481- [new-rule-option][`whitespace`](https://palantir.github.io/tslint/rules/whitespace/): Add `check-rest-spread` option (#3089)
482
483## :hammer_and_wrench: Bugfixes & enhancements
484
485- [api] `AbstractRule#applyWithFunction` allows additional parameter that is passed through to `walkFn` (#3140)
486- [api] `AbstractRule#applyWithFunction` has better type checking for its type parameter (#2660)
487- [bugfix][`member-access`](https://palantir.github.io/tslint/rules/member-access/) autofix now correcly inserts `public` keyword after decorators (#3162)
488- [bugfix][`prefer-const`](https://palantir.github.io/tslint/rules/prefer-const/) correctly handle `catch` without binding parameter introduced in `typescript@2.5.1` (#3151)
489- [bugfix][`no-invalid-template-strings`](https://palantir.github.io/tslint/rules/no-invalid-template-strings/) allows backslash-prefixed template expressions (#3116)
490- [bugfix][`deprecation`](https://palantir.github.io/tslint/rules/deprecation/) no longer shows errors on imports and exports (#3141)
491- [bugfix][`deprecation`](https://palantir.github.io/tslint/rules/deprecation/): fix false positive when calling a function or method where another overload is deprecated (#2883)
492- [bugfix][`whitespace`](https://palantir.github.io/tslint/rules/whitespace/): fixed `"check-separator"` for trivial `for` cases. (#3132)
493- [bugfix][`prefer-object-spread`](https://palantir.github.io/tslint/rules/prefer-object-spread/) prevent spreading `this` as it is not allowed by the compiler (#3126)
494- [bugfix] `msbuild` formatter uses backslashes in paths on Windows (#3145)
495- [bugfix][`no-namespace`](https://palantir.github.io/tslint/rules/no-namespace/) ignores global augmentation (#3161)
496- [enhancement] remove superfluous empty lines on tslint output. (#3121)
497- [enhancement][`no-submodule-imports`](https://palantir.github.io/tslint/rules/no-submodule-imports/) allows whitelisting of submodules like `@angular/core/testing` (#3129)
498- [enhancement] custom lint rules will be resolved using node's path resolution to allow for loaders like `ts-node` (#3108)
499- [enhancement][`quotemark`](https://palantir.github.io/tslint/rules/quotemark/) no longer requires `"single"` or `"double"` to be the first option. The rule defaults to `"double"` if none is specified. (#3114)
500- [enhancement][`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) autofix removes trailing comments of imports (#3156)
501- [enhancement][`no-unnecessary-type-assertion`](https://palantir.github.io/tslint/rules/no-unnecessary-type-assertion/) allows certain necessary assertions to prevent type widening (#3120)
502
503Thanks to our contributors!
504
505- Paul Gschwendtner
506- Andy Hanson
507- ksvitkovsky
508- Santi Albo
509- aervin
510- Junle Li
511- Joscha Feth
512- WiseBird
513- Caleb Eggensperger
514- WGroenestein
515- Bowen Ni
516
517## v5.6.0
518
519## :tada: New rules, options, and fixers
520
521- [new-rule][`no-duplicate-imports`](https://palantir.github.io/tslint/rules/no-duplicate-imports/) (#3075)
522- [new-rule][`no-submodule-imports`](https://palantir.github.io/tslint/rules/no-submodule-imports/) (#3091)
523- [new-rule][`space-within-parens`](https://palantir.github.io/tslint/rules/space-within-parens/) (#2959)
524- [new-fixer][`member-access`](https://palantir.github.io/tslint/rules/member-access/) (#2969)
525- [new-fixer][`no-null-keyword`](https://palantir.github.io/tslint/rules/no-null-keyword/): fix `x == null` to `x == undefined` (#2802)
526- [new-rule-option][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) let's you optionally ignore certain kinds of declarations (#3030)
527- [new-rule-option][`prefer-conditional-expression`](https://palantir.github.io/tslint/rules/prefer-conditional-expression/) adds `check-else-if` (#2963)
528
529## :hammer_and_wrench: Bugfixes & enhancements
530
531- [bugfix][`array-type`](https://palantir.github.io/tslint/rules/array-type/): consider `this` to be simple type (#2982)
532- [bugfix][`await-promise`](https://palantir.github.io/tslint/rules/await-promise/) accepts not only union types but also intersection types with Promise-like types (#2987)
533- [bugfix][`callable-types`](https://palantir.github.io/tslint/rules/callable-types/): don't remove export modifier of interfaces (#2962)
534- [bugfix][`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/): Only checks variables at the file-level. (#2950)
535- [bugfix][`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/): Uses correct visibility of variables. (#2950)
536- [bugfix][`no-floating-promises`](https://palantir.github.io/tslint/rules/no-floating-promises/): recognize rejection handler passed as second argument to `promise.then()` (#3048)
537- [bugfix][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) don't warn for shadowed type parameter on static class members (#3030)
538- [bugfix][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) fixed false positive with key name in index signature (#3030)
539- [bugfix][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) fixed false positive with parameter inside function decorator (#3030)
540- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/): allow truthyness and falsyness checks (#3008)
541- [bugfix][`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) fixed crash when using destructuring (#3058)
542- [bugfix][`one-line`](https://palantir.github.io/tslint/rules/one-line/) correctly handles multiline type parameters (#3004)
543- [bugfix][`prefer-for-of`](https://palantir.github.io/tslint/rules/prefer-for-of/) fixed false positives when array is modified, e.g. `arr[i]++` (#3044)
544- [bugfix][`prefer-object-spread`](https://palantir.github.io/tslint/rules/prefer-object-spread/) adds parens when fixing arrow function return (#3026)
545- [bugfix][`prefer-object-spread`](https://palantir.github.io/tslint/rules/prefer-object-spread/) permit functions as first argument to Object.assign (#3098)
546- [bugfix][`space-before-function-paren`](https://palantir.github.io/tslint/rules/space-before-function-paren/) Handle default exports of functions without names like anonymous functions (fixes #3040) (#3053)
547- [bugfix] Fixed an issue where, at runtime, the module `./test/parse` could not be located due after consumers had run `yarn clean` (#3072)
548- [enhancement][`no-null-keyword`](https://palantir.github.io/tslint/rules/no-null-keyword/) allows strict comparison (#2802)
549- [enhancement][`no-switch-case-fall-through`](https://palantir.github.io/tslint/rules/no-switch-case-fall-through/) matches `// falls through` comments case insensitive and allows trailing text (#2983)
550- [enhancement][`ordered-imports`](https://palantir.github.io/tslint/rules/ordered-imports/): support importEqualsDeclaration (#3102)
551- [enhancement] Added NaN and (+/-)Infinity as numbers to [`no-inferrable-types`](https://palantir.github.io/tslint/rules/no-inferrable-types/) (#2885)
552- [enhancement] Improved CLI error message when no filenames are specified (#3066)
553- [rule-change][`prefer-conditional-expression`](https://palantir.github.io/tslint/rules/prefer-conditional-expression/): ignore `if-else-if` by default. Use the new `"check-else-if"` option to check nested if statements (#2963)
554
555Thanks to our contributors!
556
557- Klaus Meinhardt
558- Julian Verdurmen
559- Alexandre Alonso
560- Josh Goldberg
561- ksvitkovsky
562- Daisuke Yokomoto
563- Andrii Dieiev
564- Florent Suc
565- Jason Killian
566- Amin Pakseresht
567- reduckted
568- vilicvane
569- Russell Briggs
570- Andy Hanson
571- Leo Liang
572- Dan Homola
573- BehindTheMath
574- David Golightly
575- aervin
576- Daniel Kucal
577- Ika
578- Chris Barr
579
580## v5.5.0
581
582**Editor's note**: This release features an important bugfix for overlapping fixes when using `--project` and `--fix` (#2864).
583
584## :tada: New rules and options
585
586- [new-rule-option][`completed-docs`](https://palantir.github.io/tslint/rules/completed-docs/): Add `enum-members` option (#2911)
587- [new-rule][`no-this-assignment`](https://palantir.github.io/tslint/rules/no-this-assignment/) (#2931)
588
589## :hammer_and_wrench: Bugfixes & enhancements
590
591- [bugfix][`encoding`](https://palantir.github.io/tslint/rules/encoding/) closes files correctly (#2958)
592- [bugfix][`whitespace`](https://palantir.github.io/tslint/rules/whitespace/) fix whitespace `"check-module"` to properly lint and fix errors (#2401) (#2825)
593- [bugfix]: [`whitespace`](https://palantir.github.io/tslint/rules/whitespace/): now correctly handles dynamic imports introduced in typescript@2.4.0 (#2924)
594- [bugfix][`switch-final-break`](https://palantir.github.io/tslint/rules/switch-final-break/): don't fail if break jumps to a label outside of the switch (#2914)
595- [bugfix][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/): exempt `this` parameter (#2598)
596- [bugfix][`prefer-for-of`](https://palantir.github.io/tslint/rules/prefer-for-of/) correctly handles variable scopes and other unrelated identifiers (#2984)
597- [bugfix] Don't leave blank lines when [`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) autofix removes whole import (#2901)
598- [cli] restore `-v` option (#2926)
599- [enhancement] Print stack trace of exceptions (#2890)
600- [enhancement] Added allow-empty-catch option to [`no-empty`](https://palantir.github.io/tslint/rules/no-empty/) (#2886)
601- [enhancement][`prefer-const`](https://palantir.github.io/tslint/rules/prefer-const/): handle destructuring in for-of loop initializer as if `{"destructuring": "all"}` was specified (#2904)
602- [enhancement][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/): added checks for other shadowing declarations, e.g. interfaces, classes, type parameters, imports, etc. (#2598)
603- [rule-change][`no-shadowed-variable`](https://palantir.github.io/tslint/rules/no-shadowed-variable/) no longer fails for declarations in the same scope, e.g. `var foo; var foo;`. Use the rule [`no-duplicate-variable`](https://palantir.github.io/tslint/rules/no-duplicate-variable/) to find such errors. (#2598)
604
605Thanks to our contributors!
606
607- Klaus Meinhardt
608- Josh Goldberg
609- Petr Kosikhin
610- Pablo Núñez
611- Benny Neugebauer
612- Radon Rosborough
613- reduckted
614- Chris Barr
615- Julian Verdurmen
616
617## v5.4.3
618
619## :hammer_and_wrench: Bugfixes
620
621- [bugfix] Fixed regression with empty `--out` file (#2867)
622- [bugfix][`unified-signatures`](https://palantir.github.io/tslint/rules/unified-signatures/): Don't suggest to unify rest parameters. (#2874)
623- [bugfix][`binary-expression-operand-order`](https://palantir.github.io/tslint/rules/binary-expression-operand-order/): Allow if both sides of the binary expression are literals. (#2873)
624- [bugfix] Restore compatibility with typescript@2.1 and 2.2 for [`whitespace`](https://palantir.github.io/tslint/rules/whitespace/), [`space-before-function-paren`](https://palantir.github.io/tslint/rules/space-before-function-paren/) and [`deprecation`](https://palantir.github.io/tslint/rules/deprecation/) (#2893)
625- [docs][`no-string-literal`](https://palantir.github.io/tslint/rules/no-string-literal/): Fix documentation (#2875)
626
627## v5.4.2
628
629## :hammer_and_wrench: Bugfixes
630
631- [bugfix] Restored support for multiple `--exclude` options in the CLI (#2855)
632- [bugfix] Restored support for `--version` CLI option (#2857)
633
634## v5.4.1
635
636## :hammer_and_wrench: Bugfixes
637
638- [bugfix] Fixed regression in `--exclude` CLI option when using `--project` (#2852)
639
640## v5.4.0
641
642## :star: Non-breaking API changes
643
644- `--type-check` only checks for errors before linting is no longer required to enable rules that use the type checker. You only need to supply `--project` now.
645
646## :tada: New rules, options, and fixers
647
648- [new-rule][`switch-final-break`](https://palantir.github.io/tslint/rules/switch-final-break/) (#2804)
649- [new-rule][`use-default-type-parameter`](https://palantir.github.io/tslint/rules/use-default-type-parameter/) (#2253)
650- [new-rule][`binary-expression-operand-order`](https://palantir.github.io/tslint/rules/binary-expression-operand-order/) (#2805)
651- [new-rule-option][`ban`](https://palantir.github.io/tslint/rules/ban/) new options format: allows to specify an optional explanation message for function bans, banning nested methods and using a wildcard for object of a method ban (#2547)
652- [new-rule-option][`no-duplicate-variable`](https://palantir.github.io/tslint/rules/no-duplicate-variable/) adds `check-parameters` option to check if variable has the same name as a parameter (#2597)
653- [new-rule-option][`curly`](https://palantir.github.io/tslint/rules/curly/): "as-needed" option (#2842)
654- [new-rule-option][`no-unbound-method`](https://palantir.github.io/tslint/rules/no-unbound-method/) add option `"ignore-static"` (#2751)
655- [new-rule-option][`strict-boolean-expressions`](https://palantir.github.io/tslint/rules/strict-boolean-expressions/) adds `allow-boolean-or-undefined` (#2820)
656- [new-fixer][`object-literal-shorthand`](https://palantir.github.io/tslint/rules/object-literal-shorthand/) can fix longhand methods (#2558)
657
658## :hammer_and_wrench: Bugfixes & enhancements
659
660- [bugfix][`prefer-object-spread`](https://palantir.github.io/tslint/rules/prefer-object-spread/) allows constructor, function and method calls and more as first argument to `Object.assign` (#2828)
661- [bugfix][`no-unbound-method`](https://palantir.github.io/tslint/rules/no-unbound-method/) walker skips past the parent if it is a cast or parenthesized expression (#2838)
662- [bugfix][`object-literal-shorthand`](https://palantir.github.io/tslint/rules/object-literal-shorthand/): fixed suggestion for generator functions (#2558)
663- [bugfix] Fixed issue with case sensitivity of [`no-unused-variable`](https://palantir.github.io/tslint/rules/no-unused-variable/) rule on Windows (#2819)
664- [bugfix] don't crash `tslint --project` if `allowJs` is set in tsconfig.json (#2823)
665- [bugfix][`align`](https://palantir.github.io/tslint/rules/align/) with option `"members"`: check members of class expressions; don't check semicolons in classes (#2668)
666- [bugfix][`no-inferred-empty-object-type`](https://palantir.github.io/tslint/rules/no-inferred-empty-object-type/): fix stack overflow (#2762)
667- [bugfix][`semicolon`](https://palantir.github.io/tslint/rules/semicolon/): don't warn about unnecesary semicolon when it is actually needed, e.g. when followed by type assertion or template string (#2655)
668- [bugfix][`space-before-function-paren`](https://palantir.github.io/tslint/rules/space-before-function-paren/): Ignore async arrow function with no parentheses (#2833)
669- [bugfix]: [`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/): Don't fail on `continue label;` (#2830)
670- [bugfix][`no-unbound-method`](https://palantir.github.io/tslint/rules/no-unbound-method/): Allow unbound method to be used as a condition (#2834)
671- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/): Allow to switch on a value of type `any` (#2836)
672- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/): Don't mark `declare global {}` as an unsafe any. (#2839)
673- [bugfix][`indent`](https://palantir.github.io/tslint/rules/indent/) now checks indentation of expressions inside template strings (#2826)
674- [enhancement] `--project` (or `-p`) enables rules that require the type checker. `--type-check` only checks for errors before linting is no longer required (#2773)
675- [enhancement][`deprecation`](https://palantir.github.io/tslint/rules/deprecation/): error message includes deprecation text if available (#2748)
676- [enhancement][`cyclomatic-complexity`](https://palantir.github.io/tslint/rules/cyclomatic-complexity/): Don't count empty switch case(#2743)
677- [enhancement][`strict-boolean-expressions`](https://palantir.github.io/tslint/rules/strict-boolean-expressions/): Allow `any`, and `true` and `false` literal types (#2758)
678- [enhancement][`no-floating-promises`](https://palantir.github.io/tslint/rules/no-floating-promises/): Allow 'promise.catch()' (#2774)
679- [enhancement][`comment-format`](https://palantir.github.io/tslint/rules/comment-format/) no longer excludes comments with triple slash from linting except `/// <reference path="..."/>` (#2616)
680- [enhancement][`prefer-object-spread`](https://palantir.github.io/tslint/rules/prefer-object-spread/): lint more locations where return value is used. (#2828)
681- [enhancement][`semicolon`](https://palantir.github.io/tslint/rules/semicolon/): option `"never"` is now spec compliant (#2655)
682- [enhancement][`object-literal-shorthand`](https://palantir.github.io/tslint/rules/object-literal-shorthand/) handles async functions correctly (#2558)
683- [enhancement] `--test` CLI option: allow passing path to tslint.json (#2784)
684- [enhancement] Use commander instead of optimist for CLI arguments (#2689)
685- [enhancement][`strict-type-predicates`](https://palantir.github.io/tslint/rules/strict-type-predicates/): warn if strictNullChecks is not enabled (#2786)
686
687Thanks to our contributors!
688
689- Klaus Meinhardt
690- Manuel Lopez
691- Andy Hanson
692- Piotr Tomiak
693
694## v5.3.2
695
696- [bugfix] Fixes `not a directory` error (#2813)
697
698## v5.3.0
699
700## This change may require a change to tslint.json
701
702- [enhancement][`prefer-switch`](https://palantir.github.io/tslint/rules/prefer-switch/): Change default `min-cases` to 3. (#2669)
703
704## :tada: Features & enhancements
705
706- [new-cli-option] cli: Add `outputAbsolutePaths` option (#2667)
707- [new-rule][`prefer-object-spread`](https://palantir.github.io/tslint/rules/prefer-object-spread/) (#2624)
708- [new-rule][`encoding`](https://palantir.github.io/tslint/rules/encoding/) (#2368)
709- [new-rule][`prefer-conditional-expression`](https://palantir.github.io/tslint/rules/prefer-conditional-expression/) (#2363)
710- [new-rule-option][`indent`](https://palantir.github.io/tslint/rules/indent/) support indent size (#2723)
711- [new-rule-option][`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/) adds `ignore-case` (#2592)
712- [new-rule-option][`quotemark`](https://palantir.github.io/tslint/rules/quotemark/): Add `avoid-template` option (#2766)
713- [new-rule-option][`await-promise`](https://palantir.github.io/tslint/rules/await-promise): What's considered a "Promise" is now configurable. (#2661)
714- [new-fixer][`indent`](https://palantir.github.io/tslint/rules/indent/) (#2723)
715- [new-fixer][`typedef-whitespace`](https://palantir.github.io/tslint/rules/typedef-whitespace/) (#2718)
716- [enhancement] better error messages in [`variable-name`](https://palantir.github.io/tslint/rules/variable-name/) (#2672)
717- [enhancement][`typedef`](https://palantir.github.io/tslint/rules/typedef/): Use name or parameters for error location (#2460)
718- [enhancement][`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/): check shorthand properties (#2592)
719- [enhancement][`space-before-function-paren`](https://palantir.github.io/tslint/rules/space-before-function-paren/): Handle `get`/`set` accessor (#2700)
720- [enhancement][`typedef-whitespace`](https://palantir.github.io/tslint/rules/typedef-whitespace/) added checks for arrow function, call and construct signature (#2718)
721- [enhancement][`no-object-literal-type-assertion`](https://palantir.github.io/tslint/rules/no-object-literal-type-assertion/): Allow cast to `any` (#2671)
722- [enhancement] cli: `-p` option handles directories (#2756)
723- [develop] testing rules with type information is enabled when a `tsconfig.json` is found next to `tslint.json` (#2769)
724- [configuration] deprecate mixed case tslint.json (#2713)
725- [bugfix][`return-undefined`](https://palantir.github.io/tslint/rules/return-undefined/): Treat a return type `void | undefined` same as `void` (#2731)
726- [bugfix][`no-unnecessary-initializer`](https://palantir.github.io/tslint/rules/no-unnecessary-initializer/): Handle `BindingElement` anywhere, not just in a `VariableDeclaration`. (#2707)
727- [bugfix][`jsdoc-format`](https://palantir.github.io/tslint/rules/jsdoc-format/): correctly handle alignment in files with BOM (#2619)
728- [bugfix][`jsdoc-format`](https://palantir.github.io/tslint/rules/jsdoc-format/): don't treat empty comments (`/**/`) as jsdoc (#2619)
729- [bugfix][`typedef-whitespace`](https://palantir.github.io/tslint/rules/typedef-whitespace/) don't warn for leading whitespace if token is preceded by line break (#2718)
730- [bugfix] Make "completed-docs" rule respect "public" privacy (or lack thereof) (#2749)
731- [bugfix][`jsdoc-format`](https://palantir.github.io/tslint/rules/jsdoc-format/): fixed error position if line ends with `\r\n` (#2619)
732- [bugfix][`prefer-switch`](https://palantir.github.io/tslint/rules/prefer-switch/): add missing checks for some expressions (#2686)
733- [bugfix][`prefer-template`](https://palantir.github.io/tslint/rules/prefer-template/): Allow `"a" + "b" + "c"`. (#2741)
734- [bugfix][`prefer-const`](https://palantir.github.io/tslint/rules/prefer-const/): fix false positive with variable declared outside of for-of or for-in (#2760)
735- [bugfix] `--project`: fix file matching with relative path to `tsconfig.json` (#2688)
736- [bugfix][`no-default-export`](https://palantir.github.io/tslint/rules/no-default-export/): correctly handle `export default abstract class {...}` (#2630)
737- [bugfix][`no-mergeable-namespace`](https://palantir.github.io/tslint/rules/no-mergeable-namespace/): display correct line in error message (#2656)
738- [bugfix][`object-literal-sort-keys`](https://palantir.github.io/tslint/rules/object-literal-sort-keys/): handle object spread correctly (#2592)
739- [bugfix] Consistently output absolute/relative paths (#2667)
740- [bugfix][`await-promise`](https://palantir.github.io/tslint/rules/await-promise): Consider types derived from a Promise in union types too. (#2661)
741- [bugfix][`no-unsafe-any`](https://palantir.github.io/tslint/rules/no-unsafe-any/): Fix bug where number literal in type position was flagged as an unsafe `any`. (#2712)
742- [api] Deprecate `Lint.Utils.objectify` (#2764)
743
744Thanks to our contributors!
745
746- Andy Hanson
747- Klaus Meinhardt
748- Martin Probst
749- Filipe Silva
750- walkerburgin
751- René Scheibe
752
753## v5.2.0
754
755- [rule-change][`no-console`](https://palantir.github.io/tslint/rules/no-console/) bans all console methods when no methods are specified (#2610)
756- [new-rule][`no-object-literal-type-assertion`](https://palantir.github.io/tslint/rules/no-object-literal-type-assertion/) (#2580)
757- [new-rule][`no-irregular-whitespace`](https://palantir.github.io/tslint/rules/no-irregular-whitespace/) (#2487)
758- [new-rule][`prefer-switch`](https://palantir.github.io/tslint/rules/prefer-switch/) (#2331)
759- [new-rule][`number-literal-format`](https://palantir.github.io/tslint/rules/number-literal-format/) (#2526)
760- [new-rule][`deprecation`](https://palantir.github.io/tslint/rules/deprecation/) (#2395)
761- [new-rule][`no-unnecessary-type-assertion`](https://palantir.github.io/tslint/rules/no-unnecessary-type-assertion/) (#2519)
762- [new-fixer][`interface-over-type-literal`](https://palantir.github.io/tslint/rules/interface-over-type-literal/) (#2617)
763- [new-fixer][`callable-types`](https://palantir.github.io/tslint/rules/callable-types/) (#2552)
764- [new-fixer][`no-string-literal`](https://palantir.github.io/tslint/rules/no-string-literal/) (#2495)
765- [new-fixer][`no-internal-module`](https://palantir.github.io/tslint/rules/no-internal-module/) (#2517)
766- [new-rule-option][`align`](https://palantir.github.io/tslint/rules/align/) rule added `members` option, which checks alignment of methods and properties of classes, objects, interfaces, type literals and object destructuring (#2387)
767- [new-rule-option][`align`](https://palantir.github.io/tslint/rules/align/) rule added `elements` option, which checks alignment of elements in array literals, array destructuring and tuple types (#2387)
768- [new-rule-option][`trailing-comma`](https://palantir.github.io/tslint/rules/trailing-comma/) adds more granular options to specify trailing commas for arrays, objects, functions, type literals, imports, and exports (#2538)
769- [api] Deprecate `ScopeAwareRuleWalker` and `BlockScopeAwareRuleWalker`. (#2561)
770- [develop] added support for [error templates in rule tests](https://palantir.github.io/tslint/develop/testing-rules/) (#2481)
771- [bugfix] Fixes "Severity for rule not found" error (#2516)
772- [bugfix][`no-unused-expression`](https://palantir.github.io/tslint/rules/no-unused-expression/): allow `void(0)` in addition to `void 0` and `void` in expression and statement position (#2645)
773- [bugfix][`align`](https://palantir.github.io/tslint/rules/align/): fix false positive for files with BOM (#2642)
774- [bugfix][`return-undefined`](https://palantir.github.io/tslint/rules/return-undefined/): Handle contextual types with ambiguous signatures; allow `any`; and handle async functions. (#2576)
775- [bugfix][`semicolon`](https://palantir.github.io/tslint/rules/semicolon/): don't mark semicolon as unnecessary when the next statement is on the same line (#2591)
776- [bugfix][`no-internal-module`](https://palantir.github.io/tslint/rules/no-internal-module/): no more false positives for global augmentation (#2517)
777- [bugfix][`no-unnecessary-qualifier`](https://palantir.github.io/tslint/rules/no-unnecessary-qualifier/): no longer breaks when walking a function that references `arguments` (#2555)
778- [bugfix][`prefer-const`](https://palantir.github.io/tslint/rules/prefer-const/) no longer shows warnings on ambient declarations (#2391)
779- [bugfix][`callable-types`](https://palantir.github.io/tslint/rules/callable-types/): suggest correct fix for interfaces with type arguments (#2552)
780- [bugfix][`quotemark`](https://palantir.github.io/tslint/rules/quotemark/): fix regression with jsx attributes (#2605)
781- [bugfix][`adjacent-overload-signatures`](https://palantir.github.io/tslint/rules/adjacent-overload-signatures/) handles functions ending in semicolon (#2412)
782- [bugfix][`object-literal-key-quotes`](https://palantir.github.io/tslint/rules/object-literal-key-quotes/): correctly stringify numbers when fixing (#2515)
783- [bugfix][`object-literal-key-quotes`](https://palantir.github.io/tslint/rules/object-literal-key-quotes/): does no longer require quotes for property names containing digits (#2515)
784- [enhancement] Failures in extended config files now indicate which file (#2588)
785- [enhancement][`align`](https://palantir.github.io/tslint/rules/align/): Don't report 'statements are not aligned' for empty statements (#2653)
786- [enhancement][`class-name`](https://palantir.github.io/tslint/rules/class-name/) now also checks class expressions (#2553)
787- [enhancement] `optionExamples`: Allow to use an options array directly instead of a string representation. (#2527)
788- [enhancement] `rulesDirectory` can now be resolved with Nodes resolve logic, if the directory contains an `index.js` (#2163) (#2358)
789- [enhancement][`no-unused-expression`](https://palantir.github.io/tslint/rules/no-unused-expression/): narrow error location for comma separated expressions and conditional expressions (#2645)
790- [enhancement][`no-string-literal`](https://palantir.github.io/tslint/rules/no-string-literal/) now handles escaped strings (#2495)
791- [enhancement][`no-unnecessary-callback-wrapper`](https://palantir.github.io/tslint/rules/no-unnecessary-callback-wrapper/): Allow `x => x(x)` (#2524)
792- [enhancement][`no-var-keyword`](https://palantir.github.io/tslint/rules/no-var-keyword/): Allow global var declarations (#2513)
793
794Thanks to our contributors!
795
796- Andy Hanson
797- Alex Eagle
798- Donald Pipowitch
799- Klaus Meinhardt
800- Gord P
801- Andy
802- Quentin
803- Mitchell Wills
804- Vito
805- CSchulz
806- Josh Goldberg
807- Brian Olore
808- Manuel Lopez
809- James Clark
810
811## v5.1.0
812
813- [new-rule] `no-invalid-template-strings` (#2332)
814- [new-rule] `no-sparse-arrays` (#2407)
815- [new-rule-option] `no-void-expression`: adds `ignore-arrow-function-shorthand` (#2445)
816- [api] `tslint:all` configuration (#2417)
817- [bugfix] In tslint:recommended move `no-reference-import` from `jsRules` to `rules` (#2441)
818- [bugfix] `no-unnecessary-callback-wrapper`: only check if callback is identifier, allow all other expressions (#2510)
819- [bugfix] `member-access`: Skip index signature, it can not have an access modifier (#2437)
820- [bugfix] `restrict-plus-operands` fixes regression where every assignment and comparison was checked (#2454)
821- [bugfix] `no-unnecessary-callback-wrapper`: allow async wrapper function (#2510)
822- [bugfix] `prefer-for-of`: No error if `delete` is used (#2458)
823- [bugfix] `radix`: don't warn for missing radix on method calls (#2352)
824- [bugfix] `no-use-before-declare`: Handle symbol with empty declarations list. (#2436)
825- [bugfix] `strict-type-predicates`: Check for construct signatures in `isFunction`. (#2479)
826- [enhancement] `strict-boolean-expressions`: When `--strictNullChecks` is turned off, `allow-null-union` and `allow-undefined-union` turn off "always truthy" errors. (#2373)
827- [enhancement] `radix`: added check for global.parseInt and window.parseInt (#2352)
828- [enhancement] `arrow-return-shorthand`: Improve failure message when return expression is an object literal (#2466)
829
830Thanks to our contributors!
831
832- Andy Hanson
833- bumbleblym
834- Klaus Meinhardt
835- Jonas Kello
836- Minko Gechev
837- Donald Pipowitch
838
839## v5.0.0
840
841## :fire: Breaking changes
842
843- Minimum version of TypeScript version is now 2.1.0 (#2425)
844- The severity level of rules are now configurable and defaults to severity "error". This affects the output of formatters:
845 - [formatter] `msbuild` was outputting all failures as "warning".
846 - [formatter] `pmd` was outputting all failures as priority 1. Now, it uses _priority 3_ for "error" (default) and _priority 4_ for "warning"
847- [formatter] `json` changed the `fix` property to now contain either one replacement or an array of replacements (#2403)
848- `tslint:recommended` configuration updated with `tslint:latest` rules & options (#2424)
849- Removed `no-unused-new` rule, with logic moved into `no-unused-expression` (#2269)
850- `no-trailing-whitespace` now checks template strings by default. Use the new options `ignore-template-strings` to restore the old behavior. (#2359)
851
852### API breaks for custom rules
853
854- Removed method `skip` from `RuleWalker` (#2313)
855- Removed all use of the TypeScript Language Service, use only Program APIs instead (#2235)
856
857 - This means that some rules that previously worked without the type checker _now require it_. This includes:
858
859 - `no-unused-variable`
860 - `no-use-before-declare`
861
862 - This breaks custom rule compilation. If your rule was not using the `ts.LanguageService` APIs, the migration is quite simple:
863
864 ```diff
865 - public applyWithProgram(srcFile: ts.SourceFile, langSvc: ts.LanguageService): Lint.RuleFailure[] {
866 - return this.applyWithWalker(new Walker(srcFile, this.getOptions(), langSvc.getProgram()));
867 + public applyWithProgram(srcFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] {
868 + return this.applyWithWalker(new Walker(srcFile, this.getOptions(), program));
869 ```
870
871 - N.B. If you are refactoring your custom rules, consider [these performance tips for writing custom rules](https://palantir.github.io/tslint/develop/custom-rules/performance.html).
872
873- Removed `createFix`. Replacements should be passed directly into addFailure. (#2403)
874- Removed deprecated `scanAllTokens` and `skippableTokenAwareRuleWalker` (#2370)
875
876## :tada: Notable features & enhancements
877
878- [feature] The severity level of rules are now individually configurable. Default severity can also be configured. (#629, #345)
879
880 - Valid values for `severity`: `default` | `error | warn | warning | none | off`
881 - Valid values for `defaultSeverity`: `error | warn | warning | none | off`
882 - Old style:
883
884 ```json
885 {
886 "extends": "tslint:latest",
887 "rules": {
888 "callable-types": true,
889 "max-line-length": [true, 140]
890 }
891 }
892 ```
893
894 - New style (in this example, `callable-types` outputs errors and `max-line-length` outputs warnings):
895
896 ```json
897 {
898 "extends": "tslint:latest",
899 "defaultSeverity": "error",
900 "rules": {
901 "callable-types": true,
902 "max-line-length": {
903 "options": 140,
904 "severity": "warning"
905 }
906 }
907 }
908 ```
909
910- [new-rule] `prefer-template` (#2243)
911- [new-rule] `return-undefined` (#2251)
912- [new-rule] `no-reference-import` (#2273)
913- [new-rule] `no-unnecessary-callback-wrapper` (#2249)
914- [new-fixer] `linebreak-style` (#2394)
915- [new-fixer] `eofline` (#2393)
916
917## Full list of changes
918
919- [api] Added class `OptionallyTypedRule`, which allows rule authors to write a rule that applies when typing is either enabled or disabled (#2300)
920- [bugfix] `prefer-function-over-method` now ignores abstract methods (#2307)
921- [bugfix] `arrow-parens` with option `ban-single-arg-parens` now correctly handles functions with return type annotation (#2265)
922- [bugfix] `prefer-function-over-method` exclude overload signatures (#2315)
923- [bugfix] `use-isnan` now applies only to comparison operators (#2317)
924- [bugfix] `file-header-rule` now handles single-line comments correctly (#2320)
925- [bugfix] `newline-before-return`: fix handling of blank lines between comments (#2321)
926- [bugfix] `trailing-comma` No longer enforce trailing commas in type parameters and tuple types (#2236)
927- [bugfix] `align` don't fix if it would remove code (#2379)
928- [bugfix] `unified-signatures` now recognizes rest parameters (#2342)
929- [bugfix] `no-inferrable-types` don't warn for inferrable type on readonly property (#2312)
930- [bugfix] `trailing-comma` no longer crashes on new without parentheses (e.g. `new Foo`) (#2389)
931- [bugfix] `semicolon` Ignore comments when checking for unnecessary semicolon (#2240)
932- [bugfix] `semicolon` Don't report unnecessary semicolon when followed by regex literal (#2240)
933- [bugfix] CLI: exit with 0 on type check errors when `--force` is specified (#2322)
934- [bugfix] CLI: `--test` now correctly strips single quotes from patterns on windows (#2322)
935- [bugfix] `prefer-const` only fix initialized variables (#2219)
936- [bugfix] `prefer-const` correctly handle variables shadowed by parameters and catched exceptions (#2219)
937- [bugfix] `prefer-const` don't warn if one variable in a for loop initializer can not be const (#2219)
938- [bugfix] `prefer-const` handle more cases in destructuring (#2219)
939- [bugfix] `no-unused-expression` allow comma separated assignments (#2269)
940- [chore] removed update-notifier dependency (#2262)
941- [development] allow rule tests to specify version requirement for typescript (#2323)
942- [enhancement] `ignore-properties` option of `no-inferrable-types` now also ignores parameter properties (#2312)
943- [enhancement] `unified-signatures` now displays line number of the overload to unify if there are more than 2 overloads (#2270)
944- [enhancement] `trailing-comma` New checks for CallSignature and NamedExports (#2236)
945- [enhancement] `semicolon` New check for export statements, function overloads and shorthand module declaration (#2240)
946- [enhancement] `semicolon` Report unnecessary semicolons in classes and in statement position (for option "always" too) (#2240)
947- [enhancement] `semicolon` check for semicolon after method overload (#2240)
948- [enhancement] `array-type` now consider `object`, `undefined` and `never` as simple types, allowing `object`, `undefined[]` and `never[]` (#1843)(#2353)
949- [enhancement] `align` check statement alignment for all blocks (#2379)
950- [enhancement] `align`check parameter alignment for all signatures (#2379)
951- [enhancement] `--test` can handle multiple paths at once (#2322)
952- [enhancement] `only-arrow-functions` allow functions that use `this` in the body (#2229)
953- [enhancement] CLI: print error when `--type-check` is used without `--project` (#2322)
954- [enhancement] CLI: don't print stack trace on type check error (#2322)
955- [enhancement] CLI: added `-p` as shorthand for `--project` to be consistent with `tsc` (#2322)
956- [enhancement] `prefer-const` show warnings for `var` (#2219)
957- [enhancement] `quotemark` fixer unescapes original quotemark (e.g. `'\''` -> `"'"`) (#2359)
958- [enhancement] `no-unused-expression` allow indirect eval `(0, eval)("");` (#2269)
959- [enhancement] `no-unused-expression` checking for unused new can now use option `allow-fast-null-checks` (#2269)
960- [enhancement] `no-unused-expression` find unused comma separated expressions in all locations of the code (#2269)
961- [enhancement] `no-unused-expression` find unused expressions inside void expression (#2269)
962- [new-config-option] Adds `defaultSeverity` with options `error`, `warning`, and `off`. (#2416)
963- [new-formatter] TAP formatter (#2325)
964- [new-rule-option] `no-unused-expression` adds option `allow-tagged-template` to allow tagged templates for side effects (#2269)
965- [new-rule-option] `no-unused-expression` adds option `allow-new` to allow `new` without using the new object (#2269)
966- [new-rule-option] `member-access` adds `no-public` option (#2247)
967- [new-rule-option] `curly` added option `ignore-same-line` (#2334)
968- [new-rule-option] `{destructuring: "all"}` to only warn if all variables in a destructuring can be const (#2219)
969- [new-rule-option] added `ignore-template-strings` to `no-trailing-whitespace` (#2359)
970- [rule-update] `array-type` now consider `undefined` and `never` as simple types, allowing `undefined[]` and `never[]` (#1843)
971
972Thanks to our contributors!
973
974- Brian Olore
975- Andy Hanson
976- @andy-ms
977- Chris Barr
978- Klaus Meinhardt
979- @bumbleblym
980- Josh Goldberg
981- James Clark
982- @vilic
983- Aleksandr Filatov
984- Matt Banz
985- Karol Janyst
986- Mike Deverell
987- Alexander James Phillips
988- Irfan Hudda
989
990## v4.5.1
991
992- [enhancement] Updated recommended rules to include `ban-types` and `no-duplicate-super` (#2271)
993- [bugfix] `object-literal-key-quotes` handle negative number property name (#2273)
994
995## v4.5.0
996
997- [new-rule] `no-import-side-effect` (#2155)
998- [new-rule] `match-default-export-name` (#2117)
999- [new-rule] `no-non-null-assertion` (#2221)
1000- [new-rule] `ban-types` (#2175)
1001- [new-rule] `no-duplicate-super` (#2038)
1002- [new-rule] `newline-before-return` (#2173)
1003- [new-rule-option] `completed-docs` adds options for location, type, and privacy. Also adds interfaces, enums, types (#2095)
1004- [new-rule-option] `no-inferrable-types` adds option `ignore-properties` (#2178)
1005- [new-rule-option] `typedef` adds options `object-destructuring` and `array-destructuring` options (#2146)
1006- [new-rule-option] `member-ordering` adds option `alphabetize` (#2101)
1007- [new-rule-option] `no-trailing-whitespace` adds option `ignore-jsdoc` (#2177)
1008- [new-rule-option] `no-trailing-whitespace` adds option `ignore-comments` option (#2153)
1009- [new-fixer] `no-inferrable-types` automatically remove inferrable type annotations (#2178)
1010- [new-fixer] `no-any` (#2165)
1011- [new-fixer] `noConsecutiveBlankLines` (#2201)
1012- [new-fixer] `object-literal-shorthand` (#2165)
1013- [bugfix] `no-switch-case-fallthrough` handle break, throw, continue and return nested in block, if-else and switch (#2218)
1014- [bugfix] `no-switch-case-fallthrough` allow empty case clauses before default clause (#2218)
1015- [bugfix] `no-mergeable-namespace` ignore property types that can't be merged (#2105)
1016- [bugfix] `object-literal-key-quotes` no need to quote a float if its .toString() is the same. (#2144)
1017- [bugfix] `no-consecutive-blank-lines` Correctly apply fixes at EOF (#2239)
1018- [bugfix]: Fixes installation issue with node 7.5 (#2212)
1019- [bugfix]: `quotemark` now handles escaped chars (#2224)
1020- [enhancement] Don't exit when a rule requires type checking but type checking is not enabled (#2188)
1021- [enhancement] `no-switch-case-fallthrough` allow single line comment `// falls through` (#2218)
1022- [enhancement] `no-unbound-method` allows property access and binary expressions (#2143)
1023- [api] Introduce `AbstractWalker` for performance (#2093)
1024 - see [performance](https://palantir.github.io/tslint/develop/custom-rules/performance.html) and [migration](https://palantir.github.io/tslint/develop/custom-rules/migration.html) docs
1025
1026Thanks to our contributors!
1027
1028- Andy Hanson
1029- Stefan Reichel
1030- Shlomi Assaf
1031- Josh Goldberg
1032- Minko Gechev
1033- Irfan Hudda
1034- Klaus Meinhardt
1035- Martin Probst
1036- Naoto Usuyama
1037- Caleb Eggensperger
1038- Arturs Vonda
1039- Joscha Feth
1040- Moritz
1041- Alexander Rusakov
1042- Alex Ryan
1043- Andy
1044- Yuichi Nukiyama
1045
1046## v4.4.2
1047
1048- [bugfix] `whitespace` rule caused false positive on EOF (#2131)
1049- [bugfix] WebStorm fails because `json` formatter parameter has extra space (#2132)
1050
1051## v4.4.1
1052
1053- [bugfix] errant space in recommended ruleset (couldn't find `no-misused-new`)
1054
1055## v4.4.0
1056
1057- [new-rule] `arrow-return-shorthand` (#1972)
1058- [new-rule] `no-unbound-method` (#2089)
1059- [new-rule] `no-boolean-literal-compare` (#2013)
1060- [new-rule] `no-unsafe-any` (#2047)
1061- [new-rule] `no-unnecessary-qualifier` (#2008)
1062- [new-rule] `no-unnecessary-initializer` (#2106)
1063- [new-rule] `await-promise` (#2102)
1064- [new-rule] `no-floating-promises` (#1632)
1065- [new-rule] `strict-type-predicates` (#2046)
1066- [new-rule] `no-misused-new` (#1963)
1067- [new-rule] `prefer-method-signature` (#2028)
1068- [new-rule] `prefer-function-over-method` (#2037)
1069- [new-rule-option] `allow-fast-null-checks` added to `no-unused-expression` (#1638)
1070- [new-rule-option] `comment-format-rule` adds `ignore-words` and `ignore-pattern` options (#1757)
1071- [new-rule-option] `whitespace` adds `check-preblock` option (#2002)
1072- [new-rule-option] `strict-boolean-expressions` adds `allow-null-union`, `allow-undefined-union`, `allow-string`, and `allow-number` and (#2033)
1073- [new-fixer] `align` (#2097)
1074- [new-fixer] `no-trailing-whitespace` (#2060)
1075- [bugfix] `no-magic-numbers` false positive on default parameter values (#2004)
1076- [bugfix] `no-empty-interface` allow empty interface with 2 or more parents (#2070)
1077- [bugfix] `no-trailing-whitespace` fixed for comments and EOF (#2060)
1078- [bugfix] `no-empty` no longer fails for private or protected constructor (#1976)
1079- [bugfix] `tslint:disable`/`tslint-enable` now handles multiple rules and fixes what code is enabled/disabled (#2061)
1080- [bugfix] `no-inferrable-types` now validates property declarations (#2081)
1081- [bugfix] `unified-signatures` false positive (#2016)
1082- [bugfix] `whitespace` finds all whitespace errors in JsxExpressions and TemplateExpressions (#2036)
1083- [bugfix] `comment-format` no more false positives in JsxText (#2036)
1084- [enhancement] `--test` option now accepts glob (#2079)
1085
1086Thanks to our contributors!
1087
1088- Alexander Rusakov
1089- Andrii Dieiev
1090- @andy-ms
1091- Andy Hanson
1092- Josh Goldberg
1093- Kei Son
1094- Klaus Meinhardt
1095- Krati Ahuja
1096- Martin Probst
1097- Mohsen Azimi
1098- Romke van der Meulen
1099- cameron-mcateer
1100
1101## v4.3.1
1102
1103- [bugfix] Fix back-compat break. Allow formattersDirectory === null (#1997)
1104
1105## v4.3.0
1106
1107- **Enabled additional rules in `tslint:latest` configuration** (#1981)
1108- [new-rule] `space-before-function-paren` (#1897)
1109- [new-rule] `typeof-compare` (#1927)
1110- [new-rule] `import-spacing` (#1935)
1111- [new-rule] `unified-signatures` (#1944)
1112- [new-fixer] `object-literal-key-quotes` (#1953)
1113- [new-fixer] `no-angle-bracket-type-assertion` (#1979)
1114- [bugfix] `adjacent-overload-signature` now handles static/computed function names (#1831)
1115- [bugfix] `file-header` now handles files with only comments (#1913)
1116- [bugfix] `no-consecutive-blank-lines` now allows blank lines in template strings (#1886)
1117- [bugfix] `object-literal-key-quotes` no longer throws exception when using rest operator (#1916)
1118- [bugfix] `restrict-plus-operands` no longer shows false positive in ternary operation (#1925)
1119- [bugfix] `prefer-for-of` now handles nested `for` loops with reused iterator (#1926)
1120- [bugfix] Exit gracefully when `tsconfig.json` passed as `--project` argument doens't have files (#1933)
1121- [bugfix] `object-literal-key-quotes` now handles shorthand and spread properties (#1945)
1122- [bugfix] `arrow-parens` Allow binding patterns `([x, y]) => ...` and `({x, y}) => ...` to have parens (#1958)
1123- [bugfix] `semicolon` fixer now handles comma separator in interfaces and indicates failure when commas are using in interfaces (#1856)
1124- [bugfix] `only-arrow-functions` option `allow-named-functions` now allows function declarations (#1961)
1125- [bugfix] `prefer-for-of` no longer shows false positive when array is in parentheses (#1986)
1126- [bugfix] `prefer-const` now works for TypeScript versions < 2.1.0 (#1989)
1127- [enhancement] `member-access` narrow location of error (#1964)
1128
1129Thanks to our contributors!
1130
1131- Andrii Dieiev
1132- @andy-ms
1133- Andy Hanson
1134- Josh Goldberg
1135- Klaus Meinhardt
1136- Linda_pp
1137- Mohsen Azimi
1138- Victor Grigoriu
1139- Yuichi Nukiyama
1140- cameron-mcateer
1141
1142## v4.2.0
1143
1144- [new-rule] `no-string-throw` (#1878)
1145- [new-rule] `no-empty-interface` (#1889)
1146- [new-rule] `interface-over-type-literal` (#1890)
1147- [new-rule] `callable-types` (#1891)
1148- [new-rule] `no-void-expression` (#1903)
1149- [new-rule-option] `ban-single-arg-parens` added to `arrow-parens` (#1893)
1150- [bugfix] `prefer-const` handles destructuring arrays (#1894), destructuring objects (#1906), and forward references (#1908)
1151- [bugfix] Don't error for misplaced braces for 'else' in `one-line` rule (#1866)
1152- [bugfix] `no-shadowed-variable` now identifies shadowed `for` iterator (#1816)
1153- [bugfix] `object-literal-key-quotes` now includes function names (#1874)
1154- [bugfix] error when EOF comes after `disable-next-line` comment (#1902)
1155
1156Thanks to our contributors!
1157
1158- Andrew Scott
1159- @andy-ms
1160- Andy Hanson
1161- James Booth
1162- Klaus Meinhardt
1163- Vladimir Matveev
1164
1165## v4.1.1
1166
1167- [bugfix] `typedef` rule was showing false positive for `catch` clause (#1887)
1168
1169## v4.1.0
1170
1171- [new-rule] `prefer-const` (#1801)
1172- [new-rule] `strict-boolean-expressions` (#1820)
1173- [new-rule] `no-magic-numbers` (#1799)
1174- [new-rule] `import-blacklist` (#1841)
1175- [new-rule] `promise-functions-async` (#1779)
1176- [new-rule] `no-inferred-empty-object-type`: a type must be specified when using a generic class/function/etc (#1821)
1177- [new-rule-option] `allow-named-functions` added to `only-arrow-functions` (#1857)
1178- [new-fixer] `prefer-const` (#1801)
1179- [new-fixer] `quotemark` (#1790)
1180- [new-formatter] `code-frame` formatter shows you the error in context (#1819)
1181- [enhancement] `no-internal-module` failures highlight less text (#1781)
1182- [enhancement] Avoid auto-fixing errors that would result in compilation errors for rules that use type-check (#1608)
1183- [rule-change] `only-arrow-functions` will allow functions with a `this` parameter (#1597)
1184- [bugfix] `no-use-before-declare` false positive on named import (#1620)
1185- [bugfix] `prefer-for-of` was showing false positive when the element is assigned (#1813)
1186- [bugfix] The command line argument `type-check` was swallowing the next argument (#1783)
1187- [bugfix] `tslint:disable-line` was re-enabling `tslint:disable` (#1634)
1188- [bugfix] `adjacent-overload-signatures` did not work for constructors (#1800)
1189- [bugfix] `checkstyle` formatter was reporting errors under one file (#1811)
1190- [bugfix] `trailing-comma` was applied to parameter lists (#1775)
1191- [api] CLI logic moved into API friendly class (#1688)
1192
1193Thanks to our contributors!
1194
1195- Alex Eagle
1196- Andrii Dieiev
1197- Andy Hanson
1198- Art Chaidarun
1199- Donald Pipowitch
1200- Feisal Ahmad
1201- Josh Goldberg
1202- Klaus Meinhardt
1203- Maciej Sypień
1204- Mohsen Azimi
1205- Ryan Lester
1206- Simon Schick
1207- Subhash Sharma
1208- Timothy Slatcher
1209- Yaroslav Admin
1210- Yuichi Nukiyama
1211- tdsmithATabc
1212- @wmrowan
1213
1214## v4.0.2
1215
1216- [enhancement] Don't exit when a rule can't be found. Print as a warning instead (#1771)
1217- [api-change] Allow 3rd party apps to see exception when the config is invalid (#1764)
1218- [bugfix] Don't flag a property named as empty string as not needing quotes in an object literal (#1762)
1219- [bugfix] Report correct number of fixes done by --fix (#1767)
1220- [bugfix] Fix false positives and exceptions in `prefer-for-of` (#1758)
1221- [bugfix] Fix `adjacent-overload-signatures` false positive when a static function has the same name (#1772)
1222
1223Thanks to our contributors!
1224
1225- @gustavderdrache
1226
1227## v4.0.1
1228
1229- [bugfix] Removed `no-unused-variable` rule from recommended config, as it was causing spurious deprecation warnings.
1230
1231## v4.0.0-dev.2
1232
1233- Include latest v4.0.0 changes
1234
1235## v4.0.0
1236
1237- **BREAKING CHANGES**
1238 - [api-change] Minor changes to the library API. See this PR for changes and upgrade instructions (#1720)
1239 - [removed-rule] Removed `no-unreachable` rule; covered by compiler (#661)
1240 - [enhancement] Changed order of applied configuration files for the `extends` array to make it more intuitive. (#1503)
1241 - [enhancement] Changed TypeScript peer dependency to >= 2.0.0 (#1710)
1242- [new-rule] `completed-docs` rule added (#1644)
1243- [new-fixer] `ordered-imports` auto fixed (#1640)
1244- [new-fixer] `arrow-parens` auto fixed (#1731)
1245- [rule-change] `indent` rule now ignores template strings (#1611)
1246- [new-rule-option] `object-literal-key-quotes` adds the options `consistent` and `consistent-as-needed` (#1733)
1247- [enhancement] `--fix` option added to automatically fix selected rules (#1697)
1248- [enhancement] Updated recommend rules (#1717)
1249- [enhancement] `adjacent-overload-signatures` now works with classes, source files, modules, and namespaces (#1707)
1250- [enhancement] Users are notified if they are using an old TSLint version (#1696)
1251- [bugfix] Lint `.jsx` files if `jsRules` are configured (#1714)
1252- [bugfix] Command line glob patterns now handle single quotes (#1679)
1253
1254Thanks to our contributors!
1255
1256- Andrii Dieiev
1257- Andy
1258- Chris Barr
1259- Davie Schoots
1260- Jordan Hawker
1261- Josh Goldberg
1262- Stepan Riha
1263- Yuichi Nukiyama
1264
1265## v4.0.0-dev.1
1266
1267- **BREAKING CHANGES**
1268 - [enhancement] The `semicolon` rule now disallows semicolons in multi-line bound class methods
1269 (to get the v3 behavior, use the `ignore-bound-class-methods` option) (#1643)
1270 - [removed-rule] Removed `use-strict` rule (#678)
1271 - [removed-rule] Removed `label-undefined` rule; covered by compiler (#1614)
1272 - [enhancement] Renamed `no-constructor-vars` to `no-parameter-properties` (#1296)
1273 - [rule-change] The `orderedImports` rule now sorts relative modules below non-relative modules (#1640)
1274- **Deprecated**
1275 - [deprecated] `no-unused-variable` rule. This is checked by the TypeScript v2 compiler using the flags [`--noUnusedParameters` and `--noUnusedLocals`](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#flag-unused-declarations-with---nounusedparameters-and---nounusedlocals). (#1481)
1276- [enhancement] Lint .js files (#1515)
1277- [new-fixer] `no-var-keyword` replaces `var` with `let` (#1547)
1278- [new-fixer] `trailing-comma` auto fixed (#1546)
1279- [new-fixer] `no-unused-variable` auto fixed for imports (#1568)
1280- [new-fixer] `semicolon` auto fixed (#1423)
1281- [new-rule] `max-classes-per-file` rule added (#1666)
1282- [new-rule-option] `no-consecutive-blank-lines` rule now accepts a number value indicating max blank lines (#1650)
1283- [new-rule-option] `ordered-imports` rule option `import-sources-order` accepts value `any` (#1602)
1284- [bugfix] `no-empty` rule fixed when parameter has readonly modifier
1285- [bugfix] `no-namespace` rule: do not flag nested or .d.ts namespaces (#1571)
1286
1287Thanks to our contributors!
1288
1289- Alex Eagle
1290- Andrii Dieiev
1291- Ben Coveney
1292- Boris Aranovich
1293- Chris Barr
1294- Cyril Gandon
1295- Evgeniy Zhukovskiy
1296- Jay Anslow
1297- Kunal Marwaha
1298- Martin Probst
1299- Mingye Wang
1300- Raghav Katyal
1301- Sean Dawson
1302- Yuichi Nukiyama
1303- jakpaw
1304
1305## v4.0.0-dev.0
1306
1307- **BREAKING CHANGES**
1308 - [enhancement] Drop support for configuration via package.json (#1579)
1309 - [removed-rule] Removed `no-duplicate-key` rule; covered by compiler (#1109)
1310 - [enhancement] Call formatter once for all file results. Format output may be different (#656)
1311 - [rule-change] `trailing-comma` supports function declarations, expressions, and types (#1486)
1312 - [rule-change] `object-literal-sort-keys` now sorts quoted keys (#1529)
1313 - [rule-change] `semicolon` now processes type aliases (#1475)
1314 - [rule-change] `no-var-keyword` now rejects `export var` statements (#1256)
1315 - [rule-change] `semicolon` now requires semicolon for function declaration with no body (#1447)
1316- [new-formatter] `fileslist` formatter writes a list of files with errors without position or error type specifics (#1558)
1317- [new-rule] `cyclomaticComplexity`, enforces a threshold of cyclomatic complexity.] (#1464)
1318- [new-rule] `prefer-for-of`, which errors when `for(var x of y)` can be used instead of `for(var i = 0; i < y.length; i++)` (#1335)
1319- [new-rule] `array-type`, which can require using either `T[]' or 'Array<T>' for arrays (#1498)
1320- [rule-change] `object-literal-sort-keys` checks multiline objects only (#1642)
1321- [rule-change] `ban` rule now can ban global functions (#327)
1322- [bugfix] always write lint result, even if using formatter (#1353)
1323- [bugfix] npm run test:bin fails on Windows (#1635)
1324- [bugfix] Don't enforce trailing spaces on newlines in typedef-whitespace rule (#1531)
1325- [bugfix] `jsdoc` rule should not match arbitrary comments (#1543)
1326- [bugfix] `one-line` rule errors when declaring wildcard ambient modules (#1425)
1327
1328Thanks to our contributors!
1329
1330- Alex Eagle
1331- Andrii Dieiev
1332- Andy Hanson
1333- Ben Coveney
1334- Boris Aranovich
1335- Chris Barr
1336- Christian Dreher
1337- Claas Augner
1338- Josh Goldberg
1339- Martin Probst
1340- Mike Deverell
1341- Nina Hartmann
1342- Satoshi Amemiya
1343- Scott Wu
1344- Steve Van Opstal
1345- Umar Bolatov
1346- Vladimir Matveev
1347- Yui
1348
1349## v3.15.1
1350
1351- Enabled additional rules in `tslint:latest` configuration (#1506)
1352
1353## v3.15.0
1354
1355- Stable release containing changes from the last dev release (v3.15.0-dev.0)
1356
1357## v3.15.0-dev.0
1358
1359- [enhancement] Rules can automatically fix errors (#1423)
1360- [enhancement] Better error messages for invalid source files (#1480)
1361- [new-rule] `adjacent-overload-signatures` rule (#1426)
1362- [new-rule] `file-header` rule (#1441)
1363- [new-rule] `object-literal-shorthand` rule (#1488)
1364- [new-rule-option] `allow-declarations` option for `only-arrow-functions` rule (#1452)
1365- [new-rule-option] `import-sources-order` option for `ordered-imports` rule (#1466)
1366- [bugfix] `arrow-parens` rule handles async and generics (#1446, #1479)
1367- [bugfix] `comment-format` rule ignores tslint control comments (#1473)
1368- [bugfix] Fix `no-shadowed-variable` rule false positives (#1482)
1369
1370Thanks to our contributors!
1371
1372- @apacala
1373- @danvk
1374- @DovydasNavickas
1375- @glen-84
1376- @IllusionMH
1377- @JoshuaKGoldberg
1378- @markwongsk
1379- @rakatyal
1380- @rhysd
1381- @ScottSWu
1382- @YuichiNukiyama
1383
1384## v3.14.0
1385
1386- Stable release containing changes from the last dev releases (v3.14.0-dev.0, v3.14.0-dev.1)
1387
1388## v3.14.0-dev.1
1389
1390- [new-rule] `arrow-parens` rule (#777)
1391- [new-rule] `max-file-line-count` rule (#1360)
1392- [new-rule] `no-unsafe-finally` rule (#1349)
1393- [new-rule] `no-for-in-array` rule (#1380)
1394- [new-rule] `object-literal-key-quotes` rule (#1364)
1395- [enhancement] Better `ban` rule failure messages (#1385)
1396- [enhancement] New stylish formatter (#1406)
1397
1398Thanks to our contributors!
1399
1400- @chrismbarr
1401- @danvk
1402- @gjuchault
1403- @lowkay
1404- @ScottSWu
1405- @YuichiNukiyama
1406
1407## v3.14.0-dev.0
1408
1409- [enhancement] Add optional type information to rules (#1323)
1410
1411Thanks to our contributors!
1412
1413- @ScottSWu
1414
1415## v3.13.0
1416
1417- Stable release containing changes from the last dev release (v3.13.0-dev.0)
1418
1419## v3.13.0-dev.0
1420
1421- [new-rule] `ordered-imports` rule (#1325)
1422- [enhancement] MPEG transport stream files are ignored by the CLI (#1357)
1423
1424Thanks to our contributors!
1425
1426- @chrismbarr
1427- @corydeppen
1428- @danvk
1429- @janaagaard75
1430- @mprobst
1431
1432## v3.12.0-dev.2
1433
1434- [enhancement] Support TypeScript v2.0.0-dev builds
1435
1436## v3.12.1
1437
1438- Stable release containing changes from the last dev release (v3.12.0-dev.1)
1439
1440## v3.12.0-dev.1
1441
1442- [bugfix] Fix null reference bug in typedef rule (#1345)
1443
1444## v3.12.0
1445
1446- Stable release containing changes from the last dev release (v3.12.0-dev.0)
1447
1448## v3.12.0-dev.0
1449
1450- [new-rule] `only-arrow-functions` rule (#1318)
1451- [new-rule] `no-unused-new` rule (#1316)
1452- [new-rule-option] `arrow-call-signature` option for `typedef` rule (#1284)
1453- [enhancement] Metadata for every rule (#1311)
1454- [enhancement] `typedef` rule is more flexible about the location of typedefs for arrow functions (#1176)
1455- [enhancement] Failure messages are clearer and more consistent for many rules (#1303, #1307, #1309)
1456- [bugfix] `no-consecutive-blank-lines` now handles lines with only whitespace correctly (#1249)
1457- [bugfix] Correctly load `.json` config files that have a BOM (#1338)
1458
1459Thanks to our contributors!
1460
1461- @allannienhuis
1462- @arnaudvalle
1463- @bencoveney
1464- @chrismbarr
1465- @corydeppen
1466- @HamletDRC
1467- @JoshuaKGoldberg
1468- @timbrown81
1469- @tomduncalf
1470- @YuichiNukiyama
1471
1472## v3.11.0
1473
1474- Stable release containing changes from the last dev release (v3.11.0-dev.0)
1475
1476## v3.11.0-dev.0
1477
1478- [new-rule] `linebreak-style` rule (#123)
1479- [new-rule] `no-mergeable-namespace` rule (#843)
1480- [enhancement] Add built-in configurations (#1261)
1481- [enhancement] New vso formatter (#1281)
1482- [new-rule-option] `ignore-interfaces` option for `semicolon` rule (#1233)
1483- [bugfix] `no-default-export` rule handles more default export cases (#1241)
1484
1485Thanks to our contributors!
1486
1487- @cgwrench
1488- @HamletDRC
1489- @lijunle
1490- @paldepind
1491- @patsissons
1492- @schmuli
1493- @YuichiNukiyama
1494
1495## v3.10.2
1496
1497- Stable release containing changes from the last dev release (v3.10.0-dev.2)
1498
1499## v3.10.0-dev.2
1500
1501- [bugfix] `member-ordering` rule doesn't crash on methods in class expressions (#1252)
1502- [bugfix] `ban` rule handles chained methods appropriately (#1234)
1503
1504Thanks to our contributors!
1505
1506- @marines
1507
1508## v3.10.1
1509
1510- Stable release containing changes from the last dev release (v3.10.0-dev.1)
1511
1512## v3.10.0-dev.1
1513
1514- [bugfix] `member-ordering` rule doesn't crash on methods in object literals (#1243)
1515
1516## v3.10.0
1517
1518- Stable release containing changes from the last dev release (v3.10.0-dev.0)
1519
1520## v3.10.0-dev.0
1521
1522- [new-rule] `new-parens` rule (#1177)
1523- [new-rule] `no-default-export` rule (#1182)
1524- [new-rule-option] `order: ...` option for `member-ordering` rule (#1208)
1525- [new-rule-option] "ignore-for-loop" option for `one-variable-per-declaration` rule (#1204)
1526- [enhancement] "no-this-in-function-in-method" option renamed to "check-function-in-method" (#1203)
1527- [bugfix] `semicolon` rule checks export statements (#1155)
1528
1529Thanks to our contributors!
1530
1531- @chrismbarr
1532- @HamletDRC
1533- @larshp
1534- @patsissons
1535- @YuichiNukiyama
1536
1537## v3.9.0
1538
1539- Stable release containing changes from the last dev release (v3.9.0-dev.0)
1540
1541## v3.9.0-dev.0
1542
1543- [new-rule] `no-namespace` rule (#1133)
1544- [new-rule] `one-variable-per-declaration` rule (#525)
1545- [new-rule-option] "ignore-params" option for `no-inferrable-types` rule (#1190)
1546- [new-rule-option] "no-this-in-function-in-method" option for `no-invalid-this` rule (#1179)
1547- [enhancement] Single line enable/disable comments (#144)
1548- [enhancement] Resolve `extends` packages relative to location of configuration file (#1171)
1549- [enhancement] `Linter` class will throw an error if configuration is of an invalid type (#1167)
1550- [bugfix] `use-isnan` allows assaignments to `NaN` (#1054)
1551- [bugfix] `no-unreachable` handles allows hoisted type aliases (#564)
1552- [bugfix] `member-ordering` rule now checks constructors (#1158)
1553- [bugfix] `--test` CLI command works correctly with specifiying custom rules (#1195)
1554
1555Thanks to our contributors!
1556
1557- @abierbaum
1558- @HamletDRC
1559- @inthemill
1560- @janslow
1561- @JoshuaKGoldberg
1562- @mprobst
1563- @patsissions
1564- @YuichiNukiyama
1565
1566## v3.8.1
1567
1568- Stable release containing changes from the last dev release (v3.8.0-dev.1)
1569
1570## v3.8.0-dev.1
1571
1572- [bugfix] Allow JS directives at the start of constructors, getters, and setters (#1159)
1573- [bugfix] Remove accidentally included performance profiles from published NPM artifact (#1160)
1574
1575## v3.8.0
1576
1577- Stable release containing changes from the last dev release (v3.8.0-dev.0)
1578
1579## v3.8.0-dev.0
1580
1581- [new-rule] `no-invalid-this` rule (#1105)
1582- [new-rule] `use-isnan` rule (#1054)
1583- [new-rule] `no-reference` rule (#1139)
1584- [new-rule-option] "allow-pascal-case" option for `variable-name` rule (#1079)
1585- [enhancement] Comments now allowed in `tslint.json` files (#1129)
1586- [enhancement] Smarter `trailing-comma` behavior (#1122)
1587- [enhancement] `semicolon` rule more lenient with arrow-function class members (#1076)
1588- [enhancement] Allow enabling/disabling rules with `//` comments (#1134)
1589- [enhancement] New checkstyle formatter (#250)
1590- [enhancement] Clearer message for `no-var-keyword` rule (#1124)
1591- [bugfix] Loaded configurations are not cached (#1128)
1592- [bugfix] Allow JS directives at the start of class methods (#1144)
1593
1594Thanks to our contributors!
1595
1596- @AndyMoreland
1597- @chrismbarr
1598- @HamletDRC
1599- @JoshuaKGoldberg
1600- @sshev
1601- @unional
1602
1603## v3.7.4
1604
1605- Stable release containing changes from the last dev release (v3.7.0-dev.5)
1606
1607## v3.7.0-dev.5
1608
1609- [bugfix] Allow JS directives in namespaces (#1115)
1610
1611## v3.7.3
1612
1613- Stable release containing changes from the last dev release (v3.7.0-dev.4)
1614
1615## v3.7.0-dev.4
1616
1617- [bugfix] Downgrade `findup-sync` dependency (#1108)
1618
1619## v3.7.2
1620
1621- Stable release containing changes from the last dev release (v3.7.0-dev.3)
1622
1623## v3.7.0-dev.3
1624
1625- [bugfix] `findConfigurationPath` always returns an absolute path (#1093)
1626- [bugfix] Update `findup-sync` dependency (#1080)
1627- [bugfix] `declare global` no longer triggers `no-internal-module` rule (#1069)
1628- [bugfix] Valid JS directives no longer trigger `no-unused-expression` rule (#1050)
1629
1630## v3.7.1
1631
1632- Stable release containing changes from the last dev release
1633
1634## v3.7.0-dev.2
1635
1636- [bugfix] Improve handling of paths provided via the -c CLI option (#1083)
1637
1638## v3.7.0
1639
1640- Stable release containing changes from the last dev release
1641
1642## v3.7.0-dev.1
1643
1644- [enhancement] `extends` field for `tslint.json` files (#997)
1645- [enhancement] `--force` CLI option (#1059)
1646- [enhancement] Improve how `Linter` class handles configurations with a `rulesDirectory` field (#1035)
1647- [new-rule] `no-angle-bracket-type-assertion` rule (#639)
1648- [new-rule-option] "allow-undefined-check" option for `triple-equals` rule (#602)
1649- [new-rule-option] "always-prefix" and "never-prefix" option for `interface-name` rule (#512)
1650
1651Thanks to our contributors!
1652
1653- @Arnavion
1654- @chrismbarr
1655- @ChrisPearce
1656- @JoshuaKGoldberg
1657- @patsissonso
1658- @sasidhar
1659- @unional
1660- @vvakame
1661
1662## v3.6.0
1663
1664- Stable release containing changes from the last dev release
1665
1666## v3.6.0-dev.1
1667
1668- [enhancement] Add `--exclude` CLI option (#915)
1669- [bugfix] Fix `no-shadowed-variable` rule handling of standalone blocks (#1021)
1670- [deprecation] Configuration through `package.json` files (#1020)
1671- [API] Export additional configuration methods from top-level "tslint" module (#1009)
1672
1673Thanks to our contributors!
1674
1675- @blakeembrey
1676- @hamhut1066
1677- @meowtec
1678
1679## v3.5.0
1680
1681- Stable release containing changes from the last dev release
1682
1683## v3.5.0-dev.1
1684
1685- [new-rule-option] "ignore-pattern" option for `no-unused-variable` rule (#314)
1686- [bugfix] Fix occassional crash in `no-string-literal` rule (#906)
1687- [enhancement] Tweak behavior of `member-ordering` rule with regards to arrow function types in interfaces (#226)
1688
1689Thanks to our contributors!
1690
1691- @arusakov
1692- @Pajn
1693
1694## v3.4.0
1695
1696- Stable release containing changes from the last two dev releases
1697
1698## v3.4.0-dev.2
1699
1700- [new-rule-option] "arrow-parameter" option for `typedef` rule (#333)
1701- [new-rule-option] "never" option for `semicolon` rule (#363)
1702- [new-rule-option] "onespace" setting for `typedef-whitespace` rule (#888)
1703- [new-rule-option] `typedef-whitespace` rule can now check spacing on right side of typdef colon (#888)
1704- [enhancement] `member-ordering` rule treats arrow functions as methods (#226)
1705- [bugfix] Handle spaces before typedefs correctly in `typedef-whitespace` rule (#955)
1706- [bugfix] `label-position` rule now allows labels on `for-of` loops (#959)
1707
1708Thanks to our contributors!
1709
1710- @b0r3as
1711- @ChaseMoskal
1712- @Pajn
1713- @pe8ter
1714- @tomduncalf
1715
1716## v3.4.0-dev.1
1717
1718- [enhancement] Revamped testing system (#620)
1719 - Writing tests for rules is now much simpler with a linter DSL.
1720 See exisitng tests in `test/rules/**/*.ts.lint` for examples.
1721- [enhancement] New msbuild formatter (#947)
1722- [bugfix] Fix handling of multiline literals in `trailing-comma` rule (#856)
1723- [bugfix] `one-line` rule correctly checks space between `catch` and opening brace (#925)
1724- [bugfix] `one-line` rule correctly checks multiline variable declarations (#935)
1725- [new-rule-option] New option `check-finally` for `one-line` rule (#925)
1726- **BREAKING CHANGES**
1727 - [bugfix] Report error when a rule in the config file is not found (#598)
1728
1729Thanks to our contributors!
1730
1731- @mmv
1732- @pe8ter
1733
1734## v3.3.0
1735
1736- [bugfix] Tweak TSLint build so TSLint works with typescript@next (#926)
1737
1738## v3.3.0-dev.1
1739
1740- [bugfix] Correctly handle more than one custom rules directory (#928)
1741
1742## v3.2.2
1743
1744- Stable release containing changes from the last dev release
1745
1746## v3.2.2-dev.1
1747
1748- [enhancement] Throw an error if a path to a directory of custom rules is invalid (#910)
1749- [new-rule-option] "jsx-single" and "jsx-double" options for `quotemark` rule (#673)
1750- [bugfix] Handle paths to directories of custom rules more accurately
1751- [bugfix] `no-unused-expression` rule handles `await` statements correctly (#887)
1752
1753## v3.2.1
1754
1755- Stable release containing changes from the last dev release
1756
1757## v3.2.1-dev.1
1758
1759- [enhancement] automatically generate a `tslint.json` file with new `--init` CLI command (#717)
1760- [bugfix] `no-var-keyword` rule detects the use of `var` in all types of `for` loops (#855)
1761
1762## v3.2.0
1763
1764- Stable release containing changes from last two dev releases
1765
1766## v3.2.0-dev.2
1767
1768- [bugfix] formatters are now exported correctly to work with TS 1.8 (#863)
1769
1770## v3.2.0-dev.1
1771
1772- [bugfix] fixed bug in how custom rules directories are registered (#844)
1773- [enhancement] better support for globs in CLI (#827)
1774- [new-rule] `no-null-keyword` rule (#722)
1775
1776## v3.1.1
1777
1778- Bump TypeScript peer dependency to `>= 1.7.3` due to `const enum` incompatibility (#832)
1779
1780## v3.1.0
1781
1782- [bugfix] build with TS v1.7.3 to fix null pointer exception (#832)
1783- [bugfix] fixed false positive in `no-require-imports` rule (#816)
1784
1785## v3.1.0-dev.1
1786
1787- [bugfix] fixed `no-shadowed-variable` false positives when handling destructuring in function params (#727)
1788- [enhancement] `rulesDirectory` in `tslint.json` now supports multiple file paths (#795)
1789
1790## v3.0.0
1791
1792- [bugfix] `member-access` rule now handles object literals and get/set accessors properly (#801)
1793 - New rule options: `check-accessor` and `check-constructor`
1794- All the changes from the following releases, including some **breaking changes**:
1795 - `3.0.0-dev.3`
1796 - `3.0.0-dev.2`
1797 - `3.0.0-dev.1`
1798 - `2.6.0-dev.2`
1799 - `2.6.0-dev.1`
1800
1801## v3.0.0-dev.3
1802
1803- TypeScript is now a peerDependency (#791)
1804- [bugfix] `no-unused-variable` rule with `react` option works with self-closing JSX tags (#776)
1805- [bugfix] `use-strict` bugfix (#544)
1806
1807## v3.0.0-dev.2
1808
1809- [new-rule-option] "react" option for `no-unused-variable` rule (#698, #725)
1810- [bugfix] Fix how `Linter` is exported from "tslint" module (#760)
1811- [bugfix] `no-use-before-declare` rule doesn't crash on uncompilable code (#763)
1812
1813## v3.0.0-dev.1
1814
1815- **BREAKING CHANGES**
1816 - Rearchitect TSLint to use external modules instead of merged namespaces (#726)
1817 - Dependencies need to be handled differently now by custom rules and formatters
1818 - See the [PR](https://github.com/palantir/tslint/pull/726) for full details about this change
1819 - `no-trailing-comma` rule removed, it is replaced by the `trailing-comma` rule (#687)
1820 - Rename `sort-object-literal-keys` rule to `object-literal-sort-keys` (#304, #537)
1821 - `Lint.abstract()` has been removed (#700)
1822- [new-rule] `trailing-comma` rule (#557, #687)
1823- [new-rule-option] "ban-keywords" option for `variable-name` rule (#735, #748)
1824- [bugfix] `typedef` rule now handles `for-of` loops correctly (#743)
1825- [bugfix] Handle tslint.json utf-8 files which have a BOM correctly (#90)
1826
1827## v2.6.0-dev.2
1828
1829- Upgrade TypeScript compiler to `v1.7.0-dev.20151003`
1830- [bugfix] `no-unused-expression` rule now handles yield expressions properly (#706)
1831
1832## v2.6.0-dev.1
1833
1834- Upgrade TypeScript compiler to `v1.7.0-dev.20150924`
1835
1836## v2.5.1
1837
1838- [new-rule] no-inferrable-types rule (#676)
1839- [new-rule-option] "avoid-escape" option for quotemark rule (#543)
1840- [bugfix] type declaration for tslint external module #686
1841- [enhancement] `AbstractRule` and `AbstractFormatter` are now abstract classes (#631)
1842 - Note: `Lint.abstract()` is now deprecated
1843
1844## v2.5.0
1845
1846- Use TypeScript compiler `v1.6.2`
1847- [bugfixes] #637, #642, #650, #652
1848- [bugfixes] fix various false positives in `no-unused-variable` rule (#570, #613, #663)
1849- Update project setup for latest VSCode (#662)
1850
1851## v2.5.0-beta
1852
1853- Use TypeScript compiler `v1.6.0-beta`
1854- [bugfix] Fix `no-internal-module` false positives on nested namespaces (#600)
1855- [docs] Add documentation for `sort-object-literal-keys` rule
1856
1857## v2.5.0-dev.5
1858
1859- Upgrade TypeScript compiler to `v1.7.0-dev.20150828`
1860- [bugfix] Handle .tsx files appropriately (#597, #558)
1861
1862## v2.5.0-dev.4
1863
1864- Upgrade TypeScript compiler to `v1.6.0-dev.20150825`
1865
1866## v2.5.0-dev.3
1867
1868- Upgrade TypeScript compiler to `v1.6.0-dev.20150821`
1869
1870## v2.5.0-dev.2
1871
1872- Upgrade TypeScript compiler to `v1.6.0-dev.20150811`
1873- [bug] fix `whitespace` false positive in JSX elements (#559)
1874
1875## v2.5.0-dev.1
1876
1877- Upgrade TypeScript compiler to `v1.6.0-dev.20150805`
1878- [enhancement] Support `.tsx` syntax (#490)
1879
1880## v2.4.5
1881
1882- [bugfix] fix false positives on `no-shadowed-variable` rule (#500)
1883- [enhancement] add `allow-trailing-underscore` option to `variable-name` rule
1884
1885## v2.4.4
1886
1887- [bugfix] remove "typescript" block from package.json (#606)
1888
1889## v2.4.3
1890
1891- [new-rule] `no-conditional-assignment` (#507)
1892- [new-rule] `member-access` (#552)
1893- [new-rule] `no-internal-module` (#513)
1894- [bugfix] small fixes to `sample.tslint.json` (#545)
1895- [bugfix] fix README docs for quotemark and indent (#523)
1896- [enhancement] update `findup-sync` and `underscore.string` dependencies
1897- [enhancement] add `"typescript"` field to `package.json` (#560)
1898- [enhancement] small improvements to CLI help text
1899- [enhancement] expose raw failures array in the JS API (#477)
1900
1901## v2.4.2
1902
1903- [bug] remove npm-shrinkwrap.json from the published package
1904
1905## v2.4.0
1906
1907- Upgraded Typescript compiler to 1.5.3
1908- [bugs] #332, #493, #509, #483
1909- [bug] fix error message in `no-var-keyword` rule
1910- [enhancement] CI tests are now run on node v0.12 in addition to v0.10
1911- **BREAKING**
1912 - `-f` option removed from CLI
1913
1914## v2.3.1-beta
1915
1916- [bugs] #137 #434 #451 #456
1917- [new-rule] `no-require-imports` disallows `require()` style imports
1918- [new-rule] `no-shadowed-variable` moves over shadowed variable checking from `no-duplicate-variable` into its own rule
1919- **BREAKING**
1920 - `no-duplicate-variable` now only checks for duplicates within the same block scope; enable `no-shadowed-variable` to get duplicate-variable checking across block scopes
1921- [enhancement] `no-duplicate-variable`, `no-shadowed-variable`, and `no-use-before-declare` now support ES6 destructuring
1922- [enhancement] tslint CLI now uses a default configuration if no config file is found
1923
1924## v2.3.0-beta
1925
1926- [bugs] #401 #367 #324 #352
1927- [new-rule] `no-var-keyword` disallows `var` in favor of `let` and `const`
1928- [new-rule] `sort-object-literal-keys` forces object-literal keys to be sorted alphabetically
1929- Add support for ES6 destructuring and module syntax (affects `variable-name`, `no-use-before-declare`, `whitespace` and `no-unused-variable`)
1930- Add support for ES6 for-of and spread operator syntax
1931- Use tsconfig.json & JSCS in the build system
1932
1933## v2.2.0-beta
1934
1935- Upgraded Typescript compiler to 1.5.0-beta
1936- **BREAKING CHANGES**
1937 - due to changes to the typescript compiler API, old custom rules may no longer work and may need to be rewritten
1938 - the JSON formatter's line and character positions are now back to being 0-indexed instead of 1-indexed
1939- [bugs] #328 #334 #319 #351 #365 #254
1940- [bug] fixes for tslint behavior around template strings (fixes #357, #349, #332, and more)
1941- [new-rule] `align` rule now enforces vertical alignment on parameters, arguments, and statements
1942- [new-rule] `switch-default` enforces a `default` case in `switch` statements
1943- [feature] `no-duplicate-variable` rule now additionally checks if function parameters have been shadowed
1944- Additional fixes to existing rules to work as before with the typescript 1.5 compiler
1945
1946## v2.1.1
1947
1948- [bugs] #292 #293 #295 #301 #302
1949- Some internal refactoring
1950- Added Windows CI testing (appveyor)
1951
1952## v2.1.0
1953
1954- Fix crash on Windows
1955
1956## v2.0.1
1957
1958- Upgraded Typescript compiler to 1.4
1959- **BREAKING CHANGES**
1960 - typedef rule options were modified:
1961 - index-signature removed as no longer necessary
1962 - property-signature renamed to property-declaration
1963 - variable-declarator renamed to variable-declaration
1964 - member-variable-declarator renamed to member-variable-declaration
1965 - typedef-whitespace rule options were modified:
1966 - catch-clause was removed as invalid
1967 - further options were added, see readme for more details
1968 - due to changes to the typescript compiler API, old custom rules may no longer work and may need to be rewritten
1969 - the JSON formatter's line and character positions are now 1-indexed instead of 0-indexed
1970
1971## v1.2.0
1972
1973- [bug] #245
1974
1975## v1.0.1
1976
1977- [bug] #238
1978
1979## v1.0.0
1980
1981- upgrade TypeScript compiler to 1.3
1982- **BREAKING CHANGES**
1983 - all error messages now start with a lower-case character and do not end with a period
1984 - all rule options are consistent in nomenclature. The `typedef` and `typedef-whitespace` rules now take in hyphenated options
1985 - `unused-variables` rule cannot find unused private variables defined in the constructor due to a bug in 1.3 compiler
1986 - `indent` rule has changed to only check for tabs or spaces and not enforce indentation levels
1987
1988## v0.4.12
1989
1990- multiple files with -f on cli
1991- config file search starts with input file
1992
1993## v0.4.11
1994
1995- [bugs] #136, #163
1996- internal refactors
1997
1998## v0.4.10
1999
2000- [bugs] #138, #145, #146, #148
2001
2002## v0.4.9
2003
2004- [new-rule] `no-any` disallows all uses of `any`
2005- [bug] `/* tslint:disable */` now disables semicolon rule as well
2006- [bug] delete operator no longer results in a false positive for `no-unused-expression`
2007
2008## v0.4.8
2009
2010- [new-rule] `no-var-requires` disallows require statements not part of an import statement
2011- [new-rule] `typedef` rule also checks for member variables
2012- [bug] `no-unused-variable` no longer triggers false positives for class members labeled only `static`
2013- [bug] `no-unused-expression` no longer triggers false positives for `"use strict";` expressions
2014- [bug] `use-strict` works correctly on function declarations
2015- [bug] config file is now discoverable from other drives on Windows
2016
2017## v0.4.7
2018
2019- [new-rule] added `no-unused-expression` rule which disallows unused expression statements
2020- [feature] the `check-operator` option for the `whitespace` rule now checks whitespace around the => token
2021- [bug] `no-use-before-declare-rule` no longer triggers false positives for member variables of classes used before the class is declared
2022- [bug] semicolon at end of file no longer triggers false positives for `whitespace` rule
2023- [bug] hoisted functions no longer cause false positives for the `no-unreachable` rule
2024- [bug] the rule loader no longer transforms/ignores the leading and trailing underscores and dashes of rule names in the config file
2025- [bug] `export import` statements no longer false positives for `no-unused-variable-rule`
2026- [docs] added documentation for creating custom rules and formatters
2027- [docs] added sample `tslint.json` file, under `docs/sample.tslint.json`
2028
2029## v0.4.6
2030
2031- [build] migrated build to use `grunt-ts` instead of `grunt-typescript`
2032- [feature] `package.json` now contains a `tslintConfig` paramater to allow users to specify the location of the configuration file there
2033- [feature] tslint now searches for the configuration file in the user's home directory if not found in the current path
2034- [bug] unbraced conditionals no longer cause false positives for the `no-unreachable` rule
2035
2036## v0.4.5
2037
2038- [feature] `no-unused-variable` no longer checks parameters by default. Parameters are now only checked if the `check-parameters` option is set.
2039- [bug] `no-unused-variable` parameter check no longer fails on variable argument parameters (like ...args) and on cases where the parameters are broken up by newlines.
2040
2041## v0.4.4
2042
2043- [bug] `no-unused-variable` validates function parameters and constructor methods
2044- [bug] `no-empty` and `no-trailing-comma` rules handle empty objects
2045
2046## v0.4.3
2047
2048- [new-rule] `no-unused-variable`
2049- [new-rule] `no-trailing-comma`
2050- [new-rule] `no-use-before-declare`
2051- [feature] support `--version` in CLI
2052- [feature] expose rule names to custom formatters
2053- [feature] add `verbose` formatter
2054- [bug] `no-empty` allows constructors with member declaration parameters
2055- [bug] CLI supports `--help`
2056- [bug] `max-line-length` allows CRLF endings