Skip to content

Commit 09c1b20

Browse files
committed
add rule to gjs & gts
1 parent a032c8a commit 09c1b20

10 files changed

+64
-21
lines changed

README.md

+13-11
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ rules in templates can be disabled with eslint directives with mustache or html
152152

153153
💼 [Configurations](https://github.com/ember-cli/eslint-plugin-ember#-configurations) enabled in.\
154154
✅ Set in the `recommended` [configuration](https://github.com/ember-cli/eslint-plugin-ember#-configurations).\
155+
![gjs logo](/docs/svgs/gjs.svg) Set in the `recommended-gjs` [configuration](https://github.com/ember-cli/eslint-plugin-ember#-configurations).\
156+
![gts logo](/docs/svgs/gts.svg) Set in the `recommended-gts` [configuration](https://github.com/ember-cli/eslint-plugin-ember#-configurations).\
155157
🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
156158
💡 Manually fixable by [editor suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).
157159

@@ -231,17 +233,17 @@ rules in templates can be disabled with eslint directives with mustache or html
231233

232234
### Ember Octane
233235

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\> | | | |
236+
| Name                                 | Description | 💼 | 🔧 | 💡 |
237+
| :----------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------- | :- | :- |
238+
| [classic-decorator-hooks](docs/rules/classic-decorator-hooks.md) | enforce using correct hooks for both classic and non-classic classes | | | |
239+
| [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` | | | |
240+
| [no-actions-hash](docs/rules/no-actions-hash.md) | disallow the actions hash in components, controllers, and routes | | | |
241+
| [no-classic-classes](docs/rules/no-classic-classes.md) | disallow "classic" classes in favor of native JS classes | | | |
242+
| [no-ember-super-in-es-classes](docs/rules/no-ember-super-in-es-classes.md) | disallow use of `this._super` in ES class methods | | 🔧 | |
243+
| [no-empty-glimmer-component-classes](docs/rules/no-empty-glimmer-component-classes.md) | disallow empty backing classes for Glimmer components | | | |
244+
| [no-tracked-properties-from-args](docs/rules/no-tracked-properties-from-args.md) | disallow creating @tracked properties from this.args | | | |
245+
| [template-indent](docs/rules/template-indent.md) | enforce consistent indentation for gts/gjs templates | | 🔧 | |
246+
| [template-no-let-reference](docs/rules/template-no-let-reference.md) | disallow referencing let variables in \<template\> | ![gjs logo](/docs/svgs/gjs.svg) ![gts logo](/docs/svgs/gts.svg) | | |
245247

246248
### jQuery
247249

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

+1-1
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): ![gjs logo](/docs/svgs/gjs.svg) `recommended-gjs`, ![gts logo](/docs/svgs/gts.svg) `recommended-gts`.
44

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

lib/recommended-rules-gjs.js

+3-1
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

+3-1
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

-1
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

+2-1
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

+2-1
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

+2-2
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

+12-1
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

+26-1
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)