Skip to content

Commit 6ed9505

Browse files
committed
add rule to gjs & gts config
1 parent 07d5e85 commit 6ed9505

10 files changed

Lines changed: 65 additions & 21 deletions

README.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -231,17 +231,17 @@ rules in templates can be disabled with eslint directives with mustache or html
231231

232232
### Ember Octane
233233

234-
| Name                                 | Description | 💼 | 🔧 | 💡 |
235-
| :----------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :- | :- | :- |
236-
| [classic-decorator-hooks](docs/rules/classic-decorator-hooks.md) | enforce using correct hooks for both classic and non-classic classes || | |
237-
| [classic-decorator-no-classic-methods](docs/rules/classic-decorator-no-classic-methods.md) | disallow usage of classic APIs such as `get`/`set` in classes that aren't explicitly decorated with `@classic` || | |
238-
| [no-actions-hash](docs/rules/no-actions-hash.md) | disallow the actions hash in components, controllers, and routes || | |
239-
| [no-classic-classes](docs/rules/no-classic-classes.md) | disallow "classic" classes in favor of native JS classes || | |
240-
| [no-ember-super-in-es-classes](docs/rules/no-ember-super-in-es-classes.md) | disallow use of `this._super` in ES class methods || 🔧 | |
241-
| [no-empty-glimmer-component-classes](docs/rules/no-empty-glimmer-component-classes.md) | disallow empty backing classes for Glimmer components || | |
242-
| [no-tracked-properties-from-args](docs/rules/no-tracked-properties-from-args.md) | disallow creating @tracked properties from this.args || | |
243-
| [template-indent](docs/rules/template-indent.md) | enforce consistent indentation for gts/gjs templates | | 🔧 | |
244-
| [template-no-let-reference](docs/rules/template-no-let-reference.md) | disallow referencing let variables in \<template\> | | | |
234+
| Name                                 | Description | 💼 | 🔧 | 💡 |
235+
| :----------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------- | :- | :- |
236+
| [classic-decorator-hooks](docs/rules/classic-decorator-hooks.md) | enforce using correct hooks for both classic and non-classic classes | | | |
237+
| [classic-decorator-no-classic-methods](docs/rules/classic-decorator-no-classic-methods.md) | disallow usage of classic APIs such as `get`/`set` in classes that aren't explicitly decorated with `@classic` | | | |
238+
| [no-actions-hash](docs/rules/no-actions-hash.md) | disallow the actions hash in components, controllers, and routes | | | |
239+
| [no-classic-classes](docs/rules/no-classic-classes.md) | disallow "classic" classes in favor of native JS classes | | | |
240+
| [no-ember-super-in-es-classes](docs/rules/no-ember-super-in-es-classes.md) | disallow use of `this._super` in ES class methods | | 🔧 | |
241+
| [no-empty-glimmer-component-classes](docs/rules/no-empty-glimmer-component-classes.md) | disallow empty backing classes for Glimmer components | | | |
242+
| [no-tracked-properties-from-args](docs/rules/no-tracked-properties-from-args.md) | disallow creating @tracked properties from this.args | | | |
243+
| [template-indent](docs/rules/template-indent.md) | enforce consistent indentation for gts/gjs templates | | 🔧 | |
244+
| [template-no-let-reference](docs/rules/template-no-let-reference.md) | disallow referencing let variables in \<template\> | ![badge-recommended-gjs][] ![badge-recommended-gts][] | | |
245245

246246
### jQuery
247247

@@ -339,3 +339,6 @@ Note that new rules should not immediately be added to the [recommended](./lib/r
339339
## 🔓 License
340340

341341
See the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).
342+
343+
[badge-recommended-gjs]: docs/svgs/gjs.svg
344+
[badge-recommended-gts]: docs/svgs/gts.svg

docs/rules/template-no-let-reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ember/template-no-let-reference
22

3-
💼 This rule is enabled in the `recommended` [config](https://github.com/ember-cli/eslint-plugin-ember#-configurations).
3+
💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `recommended-gjs`, `recommended-gts`.
44

55
<!-- end auto-generated rule header -->
66

lib/recommended-rules-gjs.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
* In order to update its content based on rules'
55
* definitions, execute "npm run update"
66
*/
7-
module.exports = {}
7+
module.exports = {
8+
"ember/template-no-let-reference": "error"
9+
}

lib/recommended-rules-gts.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
* In order to update its content based on rules'
55
* definitions, execute "npm run update"
66
*/
7-
module.exports = {}
7+
module.exports = {
8+
"ember/template-no-let-reference": "error"
9+
}

lib/recommended-rules.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ module.exports = {
7373
"ember/require-tagless-components": "error",
7474
"ember/require-valid-css-selector-in-test-helpers": "error",
7575
"ember/routes-segments-snake-case": "error",
76-
"ember/template-no-let-reference": "error",
7776
"ember/use-brace-expansion": "error",
7877
"ember/use-ember-data-rfc-395-imports": "error"
7978
}

lib/rules/template-indent.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ module.exports = {
1717
docs: {
1818
description: 'enforce consistent indentation for gts/gjs templates',
1919
// too opinionated to be recommended
20-
recommended: false,
20+
recommendedGjs: false,
21+
recommendedGts: false,
2122
category: 'Ember Octane',
2223
url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-indent.md',
2324
},

lib/rules/template-no-let-reference.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ module.exports = {
55
docs: {
66
description: 'disallow referencing let variables in \\<template\\>',
77
category: 'Ember Octane',
8-
recommended: true,
8+
recommendedGjs: true,
9+
recommendedGts: true,
910
url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-no-let-reference.md',
1011
},
1112
fixable: null,

scripts/update-rules.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,5 @@ module.exports = ${JSON.stringify(recommendedRules, null, 2)}`;
4848
}
4949

5050
generate('../lib/recommended-rules.js', (entry) => entry[1].meta.docs.recommended);
51-
generate('../lib/recommended-rules-gjs.js', (entry) => entry[1].meta.docs.category === 'gjs');
52-
generate('../lib/recommended-rules-gts.js', (entry) => entry[1].meta.docs.category === 'gts');
51+
generate('../lib/recommended-rules-gjs.js', (entry) => entry[1].meta.docs.recommendedGjs);
52+
generate('../lib/recommended-rules-gts.js', (entry) => entry[1].meta.docs.recommendedGts);

tests/__snapshots__/recommended.js.snap

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`recommended rules gjs config has the right list 1`] = `
4+
[
5+
"template-no-let-reference",
6+
]
7+
`;
8+
9+
exports[`recommended rules gts config has the right list 1`] = `
10+
[
11+
"template-no-let-reference",
12+
]
13+
`;
14+
315
exports[`recommended rules has the right list 1`] = `
416
[
517
"avoid-leaking-state-in-ember-objects",
@@ -70,7 +82,6 @@ exports[`recommended rules has the right list 1`] = `
7082
"require-tagless-components",
7183
"require-valid-css-selector-in-test-helpers",
7284
"routes-segments-snake-case",
73-
"template-no-let-reference",
7485
"use-brace-expansion",
7586
"use-ember-data-rfc-395-imports",
7687
]

tests/recommended.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
'use strict';
2-
32
const rules = require('../lib').rules;
43

54
describe('recommended rules', () => {
@@ -15,4 +14,30 @@ describe('recommended rules', () => {
1514

1615
expect(errors).toMatchSnapshot();
1716
});
17+
18+
it('gjs config has the right list', () => {
19+
const errors = [];
20+
21+
for (const name of Object.keys(rules)) {
22+
// eslint-disable-next-line jest/no-if
23+
if (rules[name].meta.docs.recommendedGjs) {
24+
errors.push(name);
25+
}
26+
}
27+
28+
expect(errors).toMatchSnapshot();
29+
});
30+
31+
it('gts config has the right list', () => {
32+
const errors = [];
33+
34+
for (const name of Object.keys(rules)) {
35+
// eslint-disable-next-line jest/no-if
36+
if (rules[name].meta.docs.recommendedGts) {
37+
errors.push(name);
38+
}
39+
}
40+
41+
expect(errors).toMatchSnapshot();
42+
});
1843
});

0 commit comments

Comments
 (0)