UNPKG

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