UNPKG

47.5 kBMarkdownView Raw
1# Changelog
2
3## [Unreleased]
4
5## [35.1.0] - 2020-03-23
6
7- Update `@typescript-eslint/eslint-plugin` and `@typescript-eslint/parser` to 2.25.0, to support new syntax introduced in Typescript 3.8. ([#523](https://github.com/Shopify/eslint-plugin-shopify/pull/523))
8
9## [35.0.0] - 2020-02-14
10
11- remove `no-vague-titles` because the rule was adopted into `eslint-plugin-jest`'s `valid-title` rule. See [the `valid-title` documentation](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/valid-title.md#disallowedwords)
12- Fixed an issue with `typescript/prefer-pascal-case-enum` when you had enum with key as string. ([517](https://github.com/Shopify/eslint-plugin-shopify/pull/517))
13
14## [34.0.1] - 2019-01-13
15
16- fix enabled graphql rules by specifying `env: 'literal'` ([514](https://github.com/Shopify/eslint-plugin-shopify/pull/518))
17
18## [34.0.0] - 2019-01-13
19
20- changed `no-vague-titles` rule to catch blacklisted **words** (instead of **sequences**) in the title ([514](https://github.com/Shopify/eslint-plugin-shopify/pull/514))
21- removed `jest/no-empty-title` and renamed `jest/require-tothrow-message` to `jest/require-to-throw-message` ([499](https://github.com/Shopify/eslint-plugin-shopify/pull/499))
22
23### New Rules
24The followiing new rules were introduced in `eslint@6.7.0`. More information can be found on the [eslint blog](https://eslint.org/blog/2019/11/eslint-v6.7.0-released).
25- [`grouped-accessor-pairs`](https://eslint.org/docs/rules/grouped-accessor-pairs)
26- [`no-constructor-return`](https://eslint.org/docs/rules/no-constructor-return)
27- [`no-dupe-else-if`](https://eslint.org/docs/rules/no-dupe-else-if)
28- [`no-setter-return`](https://eslint.org/docs/rules/no-setter-return)
29- [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator)
30
31## [33.0.0] - 2019-11-20
32
33### Breaking Change
34
35- The `graphql` configs have been pushed to an `override` for files matching a `.graphql` extension. This will allow this config to chain together with other parser-setting configs without changing the parser value. Consider the following config:
36
37```
38// .eslintrc
39{
40 extends: [
41 "plugin:shopify/typescript",
42 "plugin:shopify/graphql"
43 ]
44}
45```
46
47**Before this change** the final parser becomes `babel-eslint` for all files. This will cause errors when parsing TypeScript files even though we are extending the typescript config :( You could workaround this by moving the `plugin:shopify/graphql` first in the extends array or lint GraphQL files in a seperate script.
48
49**After this change** Final parser is `babel-eslint` for only `.graphql` files while `@typescript-eslint/parser` is set for all `.ts` and `.tsx` files. This should not cause any parser-related errors :)
50
51### New Rules
52
53- `shopify/no-all-mocks-methods` ([#204](https://github.com/Shopify/eslint-plugin-shopify/pull/204))
54- `shopify/no-namespace-imports` Prevent namespace import declarations. ([262](https://github.com/Shopify/eslint-plugin-shopify/pull/262))
55
56## [32.0.0] - 2019-11-05
57
58- `jest/valid-title`
59- `jest/prefer-hooks-on-top`
60- `jest/require-top-level-describe`
61- Enforce new-lines between groups import groups ([#409](https://github.com/Shopify/eslint-plugin-shopify/pull/409))
62
63## [31.0.0] - 2019-10-23
64
65### Using `@typescript-eslint/parser` and `@typescript-eslint/eslint-plugin`
66
67- **Breaking Change** Updated from `eslint-plugin-typescript` to `@typescript-eslint/eslint-plugin`. If you have any rules defined under the typescript namespace, you will need to change those to use the new `@typescript-eslint` namespace.
68
69For example:
70
71```json
72"rules": {
73 "typescript/restrict-plus-operands": "error"
74}
75```
76
77Will become:
78
79```json
80"rules": {
81 "@typescript-eslint/restrict-plus-operands": "error"
82}
83```
84
85### Config Changes
86
87- **Breaking Change** The `plugin:shopify/react` is no longer a core config and must augment one of the `plugin:shopify/typescript` or `plugin:shopify/esnext` configs. See examples below
88
89_Example config for react without typescript projects:_
90
91```json
92{
93 "extends": [
94 "plugin:shopify/esnext",
95 "plugin:shopify/react"
96 // ...other configs
97 ]
98}
99```
100
101_Example config for react with typescript projects:_
102
103```json
104{
105 "extends": [
106 "plugin:shopify/typescript",
107 "plugin:shopify/react"
108 // ...other configs
109 ]
110}
111```
112
113- **Note** If using the `plugin:shopify/typescript-type-checking` augmented config, you must specify a path to your tsconfig.json file in the "project" property of "parserOptions"
114
115
116### New Rules
117
118- `jest/no-standalone-expect` Prevents `expect` statements outside of a `test` or `it` block ([368](https://github.com/Shopify/eslint-plugin-shopify/pull/368))
119- `jest/no-expect-resolves` Avoid using `expect().resolves` ([370](https://github.com/Shopify/eslint-plugin-shopify/pull/370))
120
121
122## [30.0.1] - 2019-06-24
123
124- bump eslint peer depndency to 6
125
126## [30.0.0] - 2019-06-24
127
128### Changed
129- Enabled `jest/no-export` rule ([344](https://github.com/Shopify/eslint-plugin-shopify/pull/344))
130- [Major] depreciated `shopify/jest/no-try-expect` in favour of [`jest/no-try-expect`](https://github.com/jest-community/eslint-plugin-jest/pull/) ([331](https://github.com/jest-community/eslint-plugin-jest/pull/331))
131- [Major] depreciated `shopify/jest/no-if` in favour of [`jest/no-if`](https://github.com/jest-community/eslint-plugin-jest/pull/293) ([347](https://github.com/Shopify/eslint-plugin-shopify/pull/347))
132- [Major] Updated to eslint v6, enabled `no-console` and enabled `no-async-promise-executor` ([330](https://github.com/Shopify/eslint-plugin-shopify/pull/330))
133- Enabled `typescript/interface-name-prefix` to prevent `I` prefixes in TypeScript interface names
134- Enabled `jest/no-duplicate-hooks` rule ([344](https://github.com/Shopify/eslint-plugin-shopify/pull/344))
135
136### Fixed
137- [Patch] Fix `jest/no-if` from falsely reporting if statements inside of functions ([331](https://github.com/Shopify/eslint-plugin-shopify/pull/331))
138
139## [29.0.2] - 2019-06-18
140
141### Changed
142
143- Removed `react/prop-types` in typescript config ([309](https://github.com/Shopify/eslint-plugin-shopify/pull/309))
144
145## [29.0.1] - 2019-06-18
146
147### Changed
148
149- Removed `import/no-namespace` ([308](https://github.com/Shopify/eslint-plugin-shopify/pull/308))
150
151## [29.0.0] - 2019-06-17
152
153### Changed
154
155- added "necessary" to `shopify/jest/no-vague-titles` ([265](https://github.com/Shopify/eslint-plugin-shopify/pull/265))
156- `shopify/jest/no-if` now recognizes conditional statements ([298](https://github.com/Shopify/eslint-plugin-shopify/pull/298))
157
158### Added
159
160- New Rules:
161 - `jest/no-commented-out-tests` disallows commented out tests.([275](https://github.com/Shopify/eslint-plugin-shopify/pull/275))
162 - `jest/no-try-expect` disallows `expect` calls in `catch` blocks ([300](https://github.com/Shopify/eslint-plugin-shopify/pull/300))
163 - `node/prefer-promises/dns` and `node/prefer-promises/fs` These rules disallow the callback API in favor of promise API for the dns and fs modules. ([257](https://github.com/Shopify/eslint-plugin-shopify/pull/257))
164 - `jest/no-mocks-import` This rule disallows manually importing from `__mocks__` ([246](https://github.com/Shopify/eslint-plugin-shopify/pull/246))
165 - `react/state-in-constructor` Enforce state initialization to be in a class property. ([256](https://github.com/Shopify/eslint-plugin-shopify/pull/246))
166 - `import/no-namespace` Prevents namespace imports. ([305](https://github.com/Shopify/eslint-plugin-shopify/pull/305))
167
168### Fixed
169
170- `shopify/jest/no-if` ignores if statements nested within block statements ([299](https://github.com/Shopify/eslint-plugin-shopify/pull/299))
171- `react-prefer-private-members` from incorrectly reporting the members of a parent class if a React class is defined within its constructor. ([258](https://github.com/Shopify/eslint-plugin-shopify/pull/258))
172
173## [28.0.0] - 2019-04-26
174
175### Changed
176
177* Reverted a previous update from `eslint-plugin-typescript` to `@typescript-eslint/eslint-plugin`. If you have any rules defined under the `@typescript-eslint` namespace, you will need to change those to use the older `typescript` namespace.
178
179 For example:
180
181 ```json
182 "rules": {
183 "@typescript-eslint/restrict-plus-operands": "error"
184 }
185 ```
186
187 Will become:
188
189 ```json
190 "rules": {
191 "typescript/restrict-plus-operands": "error"
192 }
193 ```
194
195**Note:** This is a temporary work-around to resolve a bug in prettier-eslint and will attempt the typescript updates again when resolved.
196
197### Fixed
198
199* `shopify/restrict-full-import` "empty" array pattern (eg: `const [, bar] = foo` errors ([#243](https://github.com/Shopify/eslint-plugin-shopify/pull/243))
200* Optimized `shopify/images/no-direct-imports` to be much faster in the common case ([#247](https://github.com/Shopify/eslint-plugin-shopify/pull/247))
201* `shopify/react-hooks-strict-return` from crashing when a hook returns undefined ([#251](https://github.com/Shopify/eslint-plugin-shopify/pull/251))
202
203### Added
204
205* updated `eslint-plugin-import` to version `22.4.1` which introduces the [`no-unused-modules`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unused-modules.md) rule.
206* updated `eslint-plugin-jest` to version `22.4.1` which introduces the [`no-empty-title`](https://github.com/jest-community/eslint-plugin-jest/commit/c793b7a) rule.
207* `shopify/react-hooks-strict-return` Restrict the number of returned items from React hooks. ([#237](https://github.com/Shopify/eslint-plugin-shopify/pull/237))
208
209### Removed
210
211* turned off `node/no-extraneous-require` because it duplicates reported violations from `import/no-extraneous-dependencies` ([#240](https://github.com/Shopify/eslint-plugin-shopify/pull/240)
212
213## [27.0.1] - 2019-04-10
214
215### Changed
216
217* `shopify/jest/no-if` no longer considers if statements in describe blocks as invalid. ([#235](https://github.com/Shopify/eslint-plugin-shopify/pull/235))
218
219### Removed
220
221* turned off `consistent-return` ([#236](https://github.com/Shopify/eslint-plugin-shopify/pull/236)
222* turned off `react/jsx-no-bind` ([#239](https://github.com/Shopify/eslint-plugin-shopify/pull/239))
223* turned off `babel/camelcase` in typescript config because it overlaps with `@typescript-eslint/camelcase`. ([#238](https://github.com/Shopify/eslint-plugin-shopify/pull/238))
224* `shopify/jest/no-if` no longer considers if statements in describe blocks as invalid. ([#235](https://github.com/Shopify/eslint-plugin-shopify/pull/235))
225
226## [27.0.0] - 2019-04-08
227
228### Added
229
230#### Plugin updates and additions ([#233](https://github.com/Shopify/eslint-plugin-shopify/pull/233))
231
232#### Breaking Changes
233
234* `shopify/jquery-dollar-sign-reference` has been removed.
235* The `eslint-comments` ruleset has been removed and is now enabled by default as part of core - if you're using `es5`, `esnext`, `react` or `typescript` then you can remove the reference to `eslint-comments`.
236* The `ava`, `mocha`, `jquery` and `lodash` rulesets have been removed as these tools are are not commonly used at Shopify.
237* The `typescript-react` and `typescript-prettier` rulesets have been removed. Replace `["plugin:shopify/typescript-react"]` with `["plugin:shopify/typescript", "plugin:shopify/react"]` and replace`["plugin:shopify/typescript-prettier"]` with `["plugin:shopify/prettier"]`
238* Updated from `eslint-plugin-typescript` to `@typescript-eslint/eslint-plugin`. If you have any rules defined under the `typescript` namespace, you will need to change those to use the new `@typescript-eslint` namespace.
239
240 For example:
241
242 ```json
243 "rules": {
244 "typescript/restrict-plus-operands": "error"
245 }
246 ```
247
248 Will become:
249
250 ```json
251 "rules": {
252 "@typescript-eslint/restrict-plus-operands": "error"
253 }
254 ```
255 More information on this change can be found [in this eslint blog post](https://eslint.org/blog/2019/01/future-typescript-eslint]).
256
257#### New rules
258
259* `shopify/jest/no-if` ([#232](https://github.com/Shopify/eslint-plugin-shopify/pull/232))
260
261Refer to the [Rules of Hooks documentation](https://reactjs.org/docs/hooks-rules.html) to learn more about the following rules.
262
263* `'react-hooks/rules-of-hooks': 'error'` // Only use Hooks at the top level of a React functional component or from within another custom hook.
264* `'react-hooks/exhaustive-deps': 'error'` // Checks for missing useEffect dependencies
265
266
267#### Updated Plugins
268
269| Package | Old version | New version |
270| ---------------------------------- | ----------- | ----------- |
271| `eslint-plugin-sort-class-members` | `1.3.1` | `1.4.0` |
272| `eslint-plugin-promise` | `4.0.0` | `4.0.1` |
273| `eslint-plugin-node` | `7.0.1` | `8.0.1` |
274| `eslint-plugin-jsx-a11y` | `6.1.1"` | `6.2.1` |
275| `eslint-plugin-jest` | `21.22.0` | `21.23.0` |
276| `eslint-plugin-import` | `2.14.0` | `2.16.0` |
277| `eslint-plugin-graphql` | `2.1.0-0` | `3.0.3` |
278| `eslint-plugin-eslint-comments` | `3.0.1` | `3.1.1` |
279| `eslint-plugin-babel` | `5.1.0` | `5.3.0` |
280| `eslint-plugin-utils` | `2.1.0` | `2.3.0` |
281
282#### Added Plugins
283
284| Package | Version |
285| -------------------------------- | ------- |
286| eslint-plugin-react-hooks | 1.5.0 |
287| @typescript-eslint/eslint-plugin | 1.5.0 |
288| "@typescript-eslint/parser | 1.5.0 |
289| babel-eslint | 10.0.1 |
290
291#### Removed Plugins
292
293| Package |
294| ------- |
295| eslint-plugin-mocha |
296| eslint-plugin-ava |
297| eslint-plugin-flowtype |
298| eslint-plugin-chai-expect |
299| eslint-plugin-lodash |
300| eslint-plugin-jquery |
301
302### Changed
303
304* `jest/no-vague-titles` added `every` and `descriptive` as vague words. ([#221](https://github.com/Shopify/eslint-plugin-shopify/pull/221))
305
306## [26.3.0] - 2019-02-21
307
308### Added
309
310* Updated `eslint-plugin-react` and enabled `react/jsx-fragments` rule to prefer using `<>` over `<React.Fragment>` when defining fragments ([#223](https://github.com/Shopify/eslint-plugin-shopify/pull/223))
311
312## [26.2.0] - 2019-02-14
313
314### Added
315
316* `images-no-direct-imports` ([#219](https://github.com/Shopify/eslint-plugin-shopify/pull/219))
317
318## [26.1.2] - 2019-01-02
319
320### Fixed
321
322* `jest/no-vague-titles` no longer flags when the word `call` is used. ([#203](https://github.com/Shopify/eslint-plugin-shopify/pull/203))
323* Update `eslint-plugin-prettier` to 3.0.1 so it does not crash when given an unparsable file ([#212](https://github.com/Shopify/eslint-plugin-shopify/pull/212))
324
325### Changed
326
327* `jest/no-vague-titles` added `should` and `properly` to vague rules and new configuration to `allow` words. ([#208](https://github.com/Shopify/eslint-plugin-shopify/pull/208))
328
329## [26.1.1] - 2018-10-31
330
331### Fixed
332
333* `typescript-eslint-parser` pinned at `20.0.0` to avoid [a known issue](https://github.com/eslint/typescript-eslint-parser/issues/535) ([#201](https://github.com/Shopify/eslint-plugin-shopify/pull/201))
334
335## [26.1.0] - 2018-10-30
336
337### Added
338
339* `shopify/no-ancestor-directory-import` ([#149](https://github.com/Shopify/eslint-plugin-shopify/pull/149))
340
341### Fixed
342
343* Set TypeScript parser only on TS files. This makes sure you can extend from the typescript and react configs in either order. Previously you had to make sure typescript came first to avoid using the babel-eslint parser on typescript files. Now we suggest to extend from typescript, and then react to ensure some rules some JSX rules don't get inadventently disabled. ([#200](https://github.com/Shopify/eslint-plugin-shopify/pull/200))
344
345## [26.0.0] - 2018-10-26
346
347### Added
348
349* `shopify/eslint-comments` plugin with [eslint-plugin-eslint-comments](https://www.npmjs.com/package/eslint-plugin-eslint-comments) rules:
350 - `eslint-comments/disable-enable-pair`,
351 - `eslint-comments/no-aggregating-enable`
352 - `eslint-comments/no-duplicate-disable`
353 - `eslint-comments/no-unlimited-disable`
354 - `eslint-comments/no-unused-disable`
355 - `eslint-comments/no-unused-enable`
356 - `eslint-comments/no-restricted-disable` (disabled)
357 - `eslint-comments/no-use` (disabled)
358
359* `shopify/jest/no-snapshots` ([#182](https://github.com/Shopify/eslint-plugin-shopify/pull/182))
360
361### Changed
362
363* Updated `plugin:shopify/prettier`, `plugin:shopify/react`, and `plugin:shopify/typescript` to use `overrides` ([#173](https://github.com/Shopify/eslint-plugin-shopify/pull/173))
364* Updated `import/order` rule to enforce ordering of internal, parent and sibling imports ([#189](https://github.com/Shopify/eslint-plugin-shopify/pull/189))
365* Updated `func-style` rule to allow arrow functions ([#188](https://github.com/Shopify/eslint-plugin-shopify/pull/188))
366
367### Fixed
368
369* Rolling back `eslint-plugin-graphql` to `2.1.0-0` for multiple schema support ([#195](https://github.com/Shopify/eslint-plugin-shopify/pull/195))
370
371## [25.1.0] - 2018-10-01
372
373### Changed
374
375* Updated `typescript-eslint-parser` dependency to version 19.0.2 to support `typescript-estree`. ([#176](https://github.com/Shopify/eslint-plugin-shopify/pull/176))
376
377## [25.0.1] - 2018-09-25
378
379### Fixed
380
381* Restored `typescript-prettier` config to override `prettier` plugin parser. ([#171](https://github.com/Shopify/eslint-plugin-shopify/pull/171))
382
383## [25.0.0] - 2018-09-25
384
385### Fixed
386
387* Updated `plugin:shopify/prettier` to enable prettier linting. ([#170](https://github.com/Shopify/eslint-plugin-shopify/pull/170))
388* `strict-component-boundaries` now consistently uses the resolved path from the app root to perform its checks. This fixes a number of false-positives. ([#160](https://github.com/Shopify/eslint-plugin-shopify/pull/160))
389
390## [24.2.0] - 2018-09-21
391
392### Added
393
394* Added `plugin:shopify/graphql` to module index. ([#168](https://github.com/Shopify/eslint-plugin-shopify/pull/168))
395
396### Fixed
397
398* Updated `no-vague-titles` rule to fix parsing issues in `getMethodName`. ([#167](https://github.com/Shopify/eslint-plugin-shopify/pull/167))
399
400## [24.1.1] - 2018-09-19
401
402* Same as `24.1.0`
403
404## [24.1.0] - 2018-09-19
405
406### Added
407
408* Added `shopify/graphql` config using new `eslint-plugin-graphql` (`2.1.1.`) dependency. ([#165](https://github.com/Shopify/eslint-plugin-shopify/pull/165))
409
410## [24.0.0] - 2018-08-30
411
412### Fixed
413* `plugin:shopify/flow` now disables rules checked by Flow's static analyzer. ([#135](https://github.com/Shopify/eslint-plugin-shopify/pull/135))
414* `plugin:shopify/prettier` and `plugin:shopify/typescript-prettier` defer missing semicolon rules to a project´s `.prettierrc`. ([#135](https://github.com/Shopify/eslint-plugin-shopify/pull/135))
415* Updated `strict-component-boundaries` to exclude fixture imports. ([#117](https://github.com/Shopify/eslint-plugin-shopify/pull/117))
416* Updated `strict-component-boundaries` to exclude imports from node_modules. ([#140](https://github.com/Shopify/eslint-plugin-shopify/pull/140))
417* Updated `jest/no-vague-titles` to support `.each` syntax. ([#148](https://github.com/Shopify/eslint-plugin-shopify/pull/148))
418
419### Changed
420* Namespaced `prefer-pascal-case-enums` and `prefer-singular-enums` under `typescript`. ([#141](https://github.com/Shopify/eslint-plugin-shopify/pull/141))
421* **Breaking:** Updated to eslint `v5.4.0`. Consuming projects must be using [supported](https://eslint.org/docs/user-guide/migrating-to-5.0.0#-nodejs-4-is-no-longer-supported) node versions, we recommend `^8.10.0`. See details on the v4 to v5 [migration guide](https://eslint.org/docs/user-guide/migrating-to-5.0.0). ([#151](https://github.com/Shopify/eslint-plugin-shopify/pull/151))
422
423### Added
424* `shopify/prefer-singular-enums` ([#132](https://github.com/Shopify/eslint-plugin-shopify/pull/132))
425* `shopify/react-no-multiple-render-methods` ([#134](https://github.com/Shopify/eslint-plugin-shopify/pull/134))
426
427* New eslint rules and plugins rules: ([#151](https://github.com/Shopify/eslint-plugin-shopify/pull/151))
428 * [`max-classes-per-file`](https://eslint.org/docs/rules/max-classes-per-file) (disabled)
429 * [`no-self-assign`](https://eslint.org/docs/rules/no-self-assign)
430 * [`require-unicode-regexp`](https://eslint.org/docs/rules/require-unicode-regexp) (disabled)
431 * [`no-async-promise-executor`](https://eslint.org/docs/rules/no-async-promise-executor)
432 * [`no-misleading-character-class`](https://eslint.org/docs/rules/no-misleading-character-class)
433 * [`require-atomic-updates`](https://eslint.org/docs/rules/require-atomic-updates)
434 * [`lines-between-class-members`](https://eslint.org/docs/rules/lines-between-class-members)
435 * [`max-lines-per-function`](https://eslint.org/docs/rules/max-lines-per-function) (disabled)
436 * [`multiline-comment-style`](https://eslint.org/docs/rules/multiline-comment-style) (disabled)
437 * [`prefer-object-spread`](https://eslint.org/docs/rules/prefer-object-spread)
438 * [`import/no-self-import`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-self-import.md)
439 * [`import/no-cycle`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-cycle.md)
440 * [`import/no-relative-parent-imports`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-relative-parent-imports.md)
441 * [`jest/expect-expect`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/expect-expect.md)
442 * [`jest/no-jasmine-globals`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/no-jasmine-globals.md)
443 * [`jest/prefer-inline-snapshots`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/prefer-inline-snapshots.md) (disabled)
444 * [`jest/no-test-return-statement`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/no-test-return-statement.md)
445 * [`node/prefer-global/buffer`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/prefer-global/buffer.md)
446 * [`node/prefer-global/console`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/prefer-global/console.md)
447 * [`node/prefer-global/process`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/prefer-global/process.md0)
448 * [`node/prefer-global/url-search-params`](https://github.com/mysticatea/eslint-plugin-node/blob/master/lib/rules/prefer-global/url-search-params.js)
449 * [`node/prefer-global/url`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/prefer-global/url.md)
450 * [`node/no-unsupported-features/es-builtins`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unsupported-features/es-builtins.md) (disabled)
451 * [`node/no-unsupported-features/es-syntax`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unsupported-features/es-syntax.md) (disabled)
452 * [`node/no-unsupported-features/node-builtins`](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unsupported-features/node-builtins.md)
453 * [`react/no-unsafe`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unsafe.md)
454 * [`react/jsx-props-no-multi-spaces`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md)
455 * [`typescript/no-inferrable-types`](https://github.com/nzakas/eslint-plugin-typescript/blob/master/docs/rules/no-inferrable-types.md)
456 * [`typescript/no-var-requires`](https://github.com/nzakas/eslint-plugin-typescript/blob/master/docs/rules/no-var-requires.md)
457
458
459## [23.1.0] - 2018-08-02
460
461### Fixed
462* Updated `typescript-eslint-parser` dependency to version 17.0.1 in order to support TypeScript 3. ([#121](https://github.com/Shopify/eslint-plugin-shopify/pull/121))
463* Removed default prettier configurations. `plugin:shopify/prettier` and `plugin:shopify/typescript-prettier` now defer Prettier's config to a project's `.prettierrc`. ([#121](https://github.com/Shopify/eslint-plugin-shopify/pull/121))
464
465### Changed
466* Included `all` as a vague term for `no-vague-titles` ([#114](https://github.com/Shopify/eslint-plugin-shopify/pull/114))
467
468## [23.0.0] - 2018-07-16
469* **Breaking** `eslint-plugin-shopify` will no longer install `prettier` as a dependency. Please ensure you have added `prettier` to your `package.json` if you wish to use it.
470
471### Added
472* `shopify/jsx-prefer-fragment-wrappers` ([#94](https://github.com/Shopify/eslint-plugin-shopify/pull/94))
473* `shopify/jest/no-vague-titles` ([#93](https://github.com/Shopify/eslint-plugin-shopify/pull/93))
474* `shopify/strict-component-boundaries` ([#98](https://github.com/Shopify/eslint-plugin-shopify/pull/98))
475
476### Changed
477* **Breaking** Moved prettier to be a peerDependency, this avoids the potential for having multiple versions of prettier in the dependency graph. If you use prettier you will need to ensure you have it installed in your project as eslint-plugin-shopify will no longer install it for you ([#107](https://github.com/Shopify/eslint-plugin-shopify/pull/107))
478* **Breaking** Updated `typescript-eslint-parser` to support `typescript@2.9.1` ([#102](https://github.com/Shopify/eslint-plugin-shopify/pull/102))
479
480## [22.1.0] - 2018-06-08
481
482### Fixed
483* Updated `eslint-plugin-sort-class-members` dependency to version 1.3.1 in order to support node 10.
484
485### Added
486* `shopify/prefer-pascal-case-enums` ([#96](https://github.com/Shopify/eslint-plugin-shopify/pull/96))
487* `shopify/react-prefer-private-members` ([#95](https://github.com/Shopify/eslint-plugin-shopify/pull/95))
488
489## [22.0.0]
490* Updated dependencies
491* Added support for TypeScript 2.8
492
493## [21.0.1] - 2018-04-25
494* Fixed the publish config for the package.
495
496## [21.0.0] - 2018-04-25
497
498### Added
499* `shopify/jsx-no-hardcoded-content` now accepts a `dom` option that allows specifying attributes on DOM elements and Web Components to be checked for hardcoded content.
500
501### Removed
502* **Breaking:** turned off four rules that previously triggered errors in all cases:
503 * `shopify/react-type-state` (TypeScript now addresses the issue this rule was meant to catch)
504 * `promise/always-return`
505 * `react/no-did-mount-set-state`
506 * `no-undefined`
507* **Breaking:** turned off two rules in specific plugins:
508 * `babel/no-invalid-this` (turned off for the `typescript` configs as TypeScript has better mechanisms for unsuring a valid `this` is used)
509 * `no-process-env` (turned off for the `webpack` and `node` configs as both targets can benefit from use of `process.env`)
510
511### Fixed
512* Fixed an issue where various rules were not correctly resolving paths in `node_modules`.
513
514## [20.0.0] - 2018-03-15
515* **Breaking:** the version of TypeScript supported by this plugin is 2.7.x (in line with [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser)’s TypeScript support)
516* Updated dependencies that support the new ESLint documentation URL metadata. Errors from these plugins are accompanied by a link to the documentation for the broken rule.
517* Dependencies are now strictly versioned for tighter control over the exact rules the plugin enforces.
518
519| Package | old | new |
520| -------------------------- | --------- | --------- |
521| `eslint-plugin-ava` | `^4.4.0` | `4.5.1` |
522| `eslint-plugin-import` | `^2.8.0` | `2.9.0` |
523| `eslint-plugin-jest` | `^21.5.0` | `21.14.1` |
524| `eslint-plugin-lodash` | `^2.5.0` | `2.6.1` |
525| `eslint-plugin-node` | `^5.2.1` | `6.0.1` |
526| `eslint-plugin-prettier` | `^2.4.0` | `2.6.0` |
527| `eslint-plugin-promise` | `^3.6.0` | `3.7.0` |
528| `eslint-plugin-react` | `^7.5.1` | `7.7.0` |
529| `eslint-plugin-typescript` | `^0.8.1` | `0.10.0` |
530
531* Added rules:
532 - [`react/forbid-dom-props`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-dom-props.md) (disabled)
533 - [`react/jsx-child-element-spacing`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md) **error**
534 - [`react/jsx-max-depth`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-max-depth.md) (disabled)
535 - [`react/jsx-sort-default-props`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-sort-default-props.md) (disabled)
536 - [`react/no-this-in-sfc`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-this-in-sfc.md) **error**
537 - [`import/group-exports`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/group-exports.md) (disabled)
538 - [`import/no-self-import`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-self-import.md) **error**
539 - [`import/no-default-export`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-default-export.md) (disabled)
540 - [`import/no-useless-path-segments`](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-useless-path-segments.md) **error**
541 - [`jest/prefer-expect-assertions`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/prefer-expect-assertions.md) (disabled)
542 - [`jest/valid-expect-in-promise`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/valid-expect-in-promise.md) **error**
543 - [`jest/valid-describe`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/valid-describe.md) **error**
544 - [`jest/consistent-test-it`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/consistent-test-it.md) **error**
545 - [`jest/no-test-prefixes`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/no-test-prefixes.md) **error**
546 - [`jest/lowercase-name`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/lowercase-name.md) (disabled)
547 - [`jest/no-jest-import`](https://github.com/jest-community/eslint-plugin-jest/blob/master/docs/rules/no-jest-import.md) **error**
548 - [`promise/valid-params`](https://github.com/xjamundx/eslint-plugin-promise/blob/master/docs/rules/valid-params.md) **error**
549 - [`promise/no-new-statics`](https://github.com/xjamundx/eslint-plugin-promise/blob/master/docs/rules/no-new-statics.md) (disabled)
550 - [`typescript/explicit-function-return-type`](https://github.com/nzakas/eslint-plugin-typescript/blob/master/docs/rules/explicit-function-return-type.md) (disabled)
551 - [`typescript/no-non-null-assertion`](https://github.com/nzakas/eslint-plugin-typescript/blob/master/docs/rules/no-non-null-assertion.md) **error**
552* Updated `import/extensions` due to changes in its implementation: some extensions are explicitly allowed in `import`s: `.svg`, `.png`, `.jpg`, `.ico`, `.css`, `.sass`, `.scss`, `.less`, `.styl`. `.json` is still required as well.
553* Chore: updated CircleCI from v1 to v2.
554
555## [19.0.1] - 2018-03-12
556
557### Fixed
558* `shopify/jsx-no-hardcoded-content` rule now does not warn on all-whitespace strings as children. This was causing issues with indented JSX content, and is typically not an issue for different locales.
559
560## [19.0.0] - 2018-01-17
561
562### Added
563* `shopify/jest` config with [eslint-plugin-jest](https://www.npmjs.com/package/eslint-plugin-jest) rules:
564 - `jest/no-disabled-tests` (disabled)
565 - `jest/no-focused-tests`
566 - `jest/no-identical-title`
567 - `jest/no-large-snapshots` (limited to 12 lines)
568 - `jest/prefer-to-have-length`
569 - `jest/prefer-to-be-null`
570 - `jest/prefer-to-be-undefined`
571 - `jest/valid-expect`
572* Added `shopify/webpack` config
573* Added `shopify/polaris` config
574* Added `shopify/webpack/no-unnamed-dynamic-imports` rule
575* Added `shopify/prefer-module-scope-constants` rule
576* Added `shopify/jsx-no-complex-expressions` rule
577* Added `shopify/jsx-no-hardcoded-content` rule
578* Added `shopify/polaris-no-bare-stack-item` rule
579* Added `shopify/polaris-prefer-sectioned-prop` rule
580* Added `shopify/react-initialize-state` rule
581* Added `shopify/react-type-state` rule
582* Added [`implicit-arrow-linebreak`][] rule
583* Added [`lines-around-comment`][] rule (as a [special
584 rule][lines-around-comment-special]).
585* Added [`no-unexpected-multiline`][] rule (as a [special rule][no-unexpected-multiline-special]).
586* Added [`flowtype/no-flow-fix-me-comments`](https://github.com/gajus/eslint-plugin-flowtype/blob/677e55c6a0f1dd355268a0f19618cd2696424c53/.README/rules/no-flow-fix-me-comments.md)
587* Added [`react/jsx-one-expression-per-line`][]
588* Added [`react/destructuring-assignment`][]
589* Added [`react/no-access-state-in-setstate`][]
590* Added [`react/button-has-type`][]
591* Added [`react/jsx-curly-brace-presence`][]
592* Added [`typescript/member-naming`](https://github.com/nzakas/eslint-plugin-typescript/tree/master/docs/rules/member-naming.md)
593* Added [`typescript/no-array-constructor`](https://github.com/nzakas/eslint-plugin-typescript/tree/master/docs/rules/no-array-constructor.md)
594* Added `yarn prettier` script (prettifies source files)
595
596[`implicit-arrow-linebreak`]: https://eslint.org/docs/rules/implicit-arrow-linebreak
597[lines-around-comment-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#lines-around-comment
598[`lines-around-comment`]: https://eslint.org/docs/rules/lines-around-comment
599[no-unexpected-multiline-special]: https://github.com/prettier/eslint-config-prettier/blob/5399175c37466747aae9d407021dffec2c169c8b/README.md#no-unexpected-multiline
600[`no-unexpected-multiline`]: https://eslint.org/docs/rules/no-unexpected-multiline
601[`react/jsx-one-expression-per-line`]: https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md
602[`react/destructuring-assignment`]: https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md
603[`react/no-access-state-in-setstate`]: https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md
604[`react/button-has-type`]: https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules/button-has-type.md
605[`react/jsx-curly-brace-presence`]: https://github.com/yannickcr/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md
606
607### Changed
608* Updated dependencies to their latest versions (full details in [#63](https://github.com/Shopify/eslint-plugin-shopify/pull/63))
609* **Breaking:** `node.js` minimum supported node version update to `8.9.4` (LTS).
610* **Breaking:** Changed `eslint-config-shopify` codebase to `trailingComma: 'all'` and drop support for Node.js 6
611* **Breaking:** Updated prettier to 1.9.2, introducing a change in function parens style (set to `arrowParens: 'always'`):
612
613 ```js
614 // Before
615 const foo = myArray.map(foo => {});
616
617 // After
618 const foo = myArray.map((foo) => {});
619 ```
620
621 #### ⚠️ Upgrade path
622
623 Your project config files (`package.json`, `.prettierrc`, `.eslintrc`…)
624 may need to be updated like so:
625
626 ```diff
627 "singleQuote": true,
628 "bracketSpacing": false,
629 "trailingComma": "all",
630 + "arrowParens": "always"
631 ```
632* Prettified source files using the new config
633
634## [18.3.1] - 2017-12-21
635
636### Changed
637* Changed `eslint-config-shopify` codebase to follow es5 trailingComma [[#61](https://github.com/Shopify/eslint-plugin-shopify/pull/61)]
638
639## [18.3.0] - 2017-12-18
640
641### Added
642* Added `shopify/no-debugger`, which behaves the same as ESLint's `no-debugger` but without a fixer.
643
644## [18.2.0] - 2017-12-04
645### Added
646* Added a `typescript-prettier` config to run prettier against typescript projects.
647
648## [18.1.0] - 2017-12-01
649
650### Added
651* Added a `typescript` and `typescript-react` config [[#54](https://github.com/Shopify/eslint-plugin-shopify/pull/54)]
652
653### Changed
654* `plugin:shopify/prettier` will now enforce trailing commas in function parameter calls [[#55](https://github.com/Shopify/eslint-plugin-shopify/pull/55)]
655* `comma-dangle` will now enforce multi-line function parameters [[#55](https://github.com/Shopify/eslint-plugin-shopify/pull/55)]
656* Removed `plugin:shopify/esnext` as an included extension of the `plugin:shopify/prettier` config. `plugin:shopify/esnext` must now be extended by the consumer to use the `plugin:shopify/prettier`. [[#53](https://github.com/Shopify/eslint-plugin-shopify/pull/53)]
657
658 Example (`package.json`):
659 ```
660 "eslintConfig": {
661 "extends": [
662 "plugin:shopify/esnext",
663 "plugin:shopify/prettier"
664 ]
665 }
666 ```
667
668## [18.0.0] - 2017-10-31
669### Changed
670* Turned off `class-methods-use-this`
671
672## [17.2.1] - 2017-10-30
673### Changed
674* Turned off `babel/semi` rule in prettier config
675
676## [17.2.0] - 2017-10-25
677### Added
678* Added a prettier config [[#46](https://github.com/Shopify/eslint-plugin-shopify/pull/46)]
679
680Example:
681```
682"eslintConfig": {
683 "extends": [
684 "plugin:shopify/prettier"
685 ]
686}
687```
688
689### Changed
690* Replace all `warn` with `error` [[#48](https://github.com/Shopify/eslint-plugin-shopify/pull/48)]
691* `space-before-function-paren` now uses `asyncArrow` option (eg. `async () => {}`) [[#43](https://github.com/Shopify/eslint-plugin-shopify/pull/43)]
692* Enable `padding-line-between-statements` for directives. [[#44](https://github.com/Shopify/eslint-plugin-shopify/pull/44)]
693
694### Removed
695* `lines-around-directive` was deprecated in ESLint `v4.0.0`. [[#44](https://github.com/Shopify/eslint-plugin-shopify/pull/44)]
696
697
698## [17.1.0] - 2017-09-19
699
700### Added
701* New rules ([#41](https://github.com/Shopify/eslint-plugin-shopify/pull/41)):
702 - `import/no-anonymous-default-export`
703 - `jsx-a11y/anchor-is-valid`
704 - `no-buffer-constructor`
705 - `node/no-extraneous-import` (disabled)
706 - `node/no-extraneous-require`
707 - `for-direction`
708 - `getter-return`
709 - `react/boolean-prop-naming` (disabled)
710 - `react/default-props-match-prop-types`
711 - `react/no-redundant-should-component-update`
712 - `react/no-typos`
713 - `react/no-unused-state`
714 - `react/jsx-closing-tag-location`
715 - `array-bracket-newline` (disabled)
716 - `array-element-newline` (disabled)
717 - `function-paren-newline`
718 - `padding-line-between-statements` (disabled)
719 - `semi-style`
720 - `switch-colon-spacing`
721
722
723### Changed
724- Updated dependencies ([#41](https://github.com/Shopify/eslint-plugin-shopify/pull/41)):
725 - `eslint`
726 - `babel-eslint`
727 - `eslint-plugin-import`
728 - `eslint-plugin-jsx-a11y`
729 - `eslint-plugin-node`
730 - `eslint-plugin-react`
731- `jquery-dollar-sign-reference` no longer flags assignments from `await` expressions
732
733### Removed
734- `jsx-a11y/href-no-hash` replaced with `jsx-a11y/anchor-is-valid`
735
736## [17.0.0] - 2017-08-17
737### Changed
738- `eslint` upgrade to `4.3.0`
739- `node.js` minimum supported node version update to `6.11.1` (LTS).
740- Update dependencies:
741 - `eslint-plugin-ava`: `^4.2.0` → `^4.2.1`.
742 - `eslint-plugin-babel`: `^4.1.1` → `^4.1.2`.
743 - `eslint-plugin-lodash`: `^2.4.2` → `^2.4.4`.
744 - `eslint-plugin-mocha`: `^4.9.0` → `^4.11.0`.
745 - `eslint-plugin-node`: `^4.2.2` → `^4.2.3`.
746 - `eslint-plugin-react`: `^7.0.0` → `^7.0.1`.
747
748
749## [16.0.1] - 2017-05-29
750### Changed
751- Turned off [`prefer-destructuring`](http://eslint.org/docs/rules/prefer-destructuring) ([#30](https://github.com/Shopify/eslint-plugin-shopify/pull/30))
752
753## [16.0.0] - 2017-05-16
754### Added
755- New rule: [`babel/semi`](https://github.com/babel/eslint-plugin-babel/releases/tag/v4.1.0)
756- New rule: [`flowtype/no-types-missing-file-annotation`](https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-no-types-missing-file-annotation)
757- New rule: [`jsx-a11y/accessible-emoji`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/accessible-emoji.md)
758- New rule: [`jsx-a11y/alt-text`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/alt-text.md)
759- New rule: [`jsx-a11y/aria-activedescendant-has-tabindex`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-activedescendant-has-tabindex.md)
760- New rule: [`jsx-a11y/iframe-has-title`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/iframe-has-title.md)
761- New rule: [`jsx-a11y/interactive-supports-focus`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/interactive-supports-focus.md)
762- New rule: [`jsx-a11y/media-has-caption`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/media-has-caption.md) (disabled)
763- New rule: [`jsx-a11y/no-autofocus`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md)
764- New rule: [`jsx-a11y/no-distracting-elements`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-distracting-elements.md)
765- New rule: [`jsx-a11y/no-interactive-element-to-noninteractive-role`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-interactive-element-to-noninteractive-role.md) (disabled)
766- New rule: [`jsx-a11y/no-noninteractive-element-interactions`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-noninteractive-element-interactions.md)
767- New rule: [`jsx-a11y/no-noninteractive-element-to-interactive-role`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-noninteractive-element-to-interactive-role.md)
768- New rule: [`jsx-a11y/no-noninteractive-tabindex`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-noninteractive-tabindex.md)
769- New rule: [`jsx-a11y/no-redundant-roles`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-redundant-roles.md)
770- New rule: [`lodash/prefer-some`](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/prefer-some.md)
771- New rule: [`react/forbid-elements`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-elements.md) (disabled)
772- New rule: [`react/forbid-foreign-prop-types`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-foreign-prop-types.md)
773- New rule: [`react/no-will-update-set-state`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-will-update-set-state.md)
774- New rule: [`react/void-dom-elements-no-children`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md)
775- New rule: [`no-await-in-loop`](http://eslint.org/docs/rules/no-await-in-loop)
776- New rule: [`prefer-promise-reject-errors`](http://eslint.org/docs/rules/prefer-promise-reject-errors)
777- New rule: [`require-await`](http://eslint.org/docs/rules/require-await)
778- New rule: [`prefer-destructuring`](http://eslint.org/docs/rules/prefer-destructuring)
779- New rule: [`no-compare-neg-zero`](http://eslint.org/docs/rules/no-compare-neg-zero)
780- New rule: [`capitalized-comments`](http://eslint.org/docs/rules/capitalized-comments) (disabled)
781- New rule: [`no-multi-assign`](http://eslint.org/docs/rules/no-multi-assign)
782- New rule: [`nonblock-statement-body-position`](http://eslint.org/docs/rules/nonblock-statement-body-position) (disabled)
783- New rule: [`template-tag-spacing`](http://eslint.org/docs/rules/template-tag-spacing)
784
785### Removed
786- Deprecated: [`babel/no-await-in-loop`](https://github.com/babel/eslint-plugin-babel/releases/tag/v4.1.1)
787- Deprecated: [`jsx-a11y/img-has-alt`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/CHANGELOG.md#500--2017-05-05)
788- Deprecated: [`jsx-a11y/onclick-has-focus`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/CHANGELOG.md#500--2017-05-05)
789- Deprecated: [`jsx-a11y/onclick-has-role`](https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/CHANGELOG.md#500--2017-05-05)
790- Deprecated: [`jsx-a11y/jsx-space-before-closing`](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md#700---2017-05-06)
791
792
793## [15.2.0] - 2017-03-06
794### Changed
795- `eslint` upgrade to `3.17.x`
796
797## [15.1.2] - 2017-02-23
798### Fixed
799- `jquery-dollar-sign-reference` now checks assignments from `LogicalExpression` / `BinaryExpression`
800
801## [15.1.1] - 2017-01-17
802### Added
803- Added `eslint-index` package ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
804- Added `rules-status` and `rules-omitted` scripts ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
805- Added new `eslint-plugin-react` rules: `no-array-index-key`, `require-default-props` ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
806- Added new `eslint-plugin-lodash` rules: `import-scope` ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
807- Added new `eslint-plugin-promise` rules: `no-return-wrap`, `no-nesting`, `no-promise-in-callback`, `no-callback-in-promise`, `avoid-new`, `prefer-await-to-then`, `prefer-await-to-callbacks` ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
808
809### Changed
810- Updated `eslint-plugin-flowtype`, `eslint-plugin-lodash`, `eslint-plugin-mocha`, `eslint-plugin-promise`, `eslint-plugin-react` to their latest versions ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
811- Updated `react/prefer-stateless-function` rule to include `ignorePureComponents` flag ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
812
813### Removed
814- Removed `eslint-find-rules` package ([#4](https://github.com/Shopify/eslint-plugin-shopify/pull/4))
815
816# Pre-15.1.1 Changelog
817
818Changes were originally tracked in Shopify's [JavaScript monorepo](https://github.com/Shopify/javascript/blob/f10bf7ddbdae07370cfe7c94617c450257731552/CHANGELOG.md).
819
820[Unreleased]: https://github.com/Shopify/eslint-plugin-shopify/compare/v26.3.0...HEAD
821[26.3.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v26.2.0...v26.3.0
822[26.2.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v26.1.2...v26.2.0
823[26.1.2]: https://github.com/Shopify/eslint-plugin-shopify/compare/v26.1.1...v26.1.2
824[26.1.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v26.1.0...v26.1.1
825[26.1.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v26.0.0...v26.1.0
826[26.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v25.1.0...v26.0.0
827[25.1.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v25.0.1...v25.1.0
828[25.0.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v25.0.0...v25.0.1
829[25.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v24.2.0...v25.0.0
830[24.2.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v24.1.1...v24.2.0
831[24.1.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v24.1.0...v24.1.1
832[24.1.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v24.0.0...v24.1.0
833[24.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v23.1.0...v24.0.0
834[23.1.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v23.0.0...v23.1.0
835[23.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v22.1.0...v23.0.0
836[22.1.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v22.0.0...v22.1.0
837[22.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v21.0.1...v22.0.0
838[21.0.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v21.0.0...v21.0.1
839[21.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v20.0.0...v21.0.0
840[20.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v19.0.1...v20.0.0
841[19.0.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v19.0.0...v19.0.1
842[19.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v18.3.1...v19.0.0
843[18.3.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v18.3.0...v18.3.1
844[18.3.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v18.2.0...v18.3.0
845[18.2.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v18.1.0...v18.2.0
846[18.1.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v18.0.0...v18.1.0
847[18.0.0]: https://github.com/Shopify/eslint-plugin-shopify/compare/v17.2.1...v18.0.0
848[17.2.1]: https://github.com/Shopify/eslint-plugin-shopify/compare/v17.2.0...v17.2.1
849
\No newline at end of file