Skip to content

Commit 5d4e8b5

Browse files
committed
Extract rule: template-deprecated-render-helper
1 parent 5d2ad94 commit 5d4e8b5

4 files changed

Lines changed: 86 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ rules in templates can be disabled with eslint directives with mustache or html
236236
| [no-observers](docs/rules/no-observers.md) | disallow usage of observers || | |
237237
| [no-old-shims](docs/rules/no-old-shims.md) | disallow usage of old shims for modules || 🔧 | |
238238
| [no-string-prototype-extensions](docs/rules/no-string-prototype-extensions.md) | disallow usage of `String` prototype extensions || | |
239+
| [template-deprecated-render-helper](docs/rules/template-deprecated-render-helper.md) | disallow {{render}} helper | | | |
239240

240241
### Ember Data
241242

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# ember/template-deprecated-render-helper
2+
3+
<!-- end auto-generated rule header -->
4+
5+
Disallows the {{render}} helper which is deprecated.
6+
7+
## Examples
8+
9+
Incorrect:
10+
11+
```gjs
12+
<template>{{render "user"}}</template>
13+
```
14+
15+
Correct:
16+
17+
```gjs
18+
<template><User /></template>
19+
```
20+
21+
## References
22+
23+
- [ember-template-lint deprecated-render-helper](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/deprecated-render-helper.md)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/** @type {import('eslint').Rule.RuleModule} */
2+
module.exports = {
3+
meta: {
4+
type: 'suggestion',
5+
docs: {
6+
description: 'disallow {{render}} helper',
7+
category: 'Deprecations',
8+
strictGjs: true,
9+
strictGts: true,
10+
url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-deprecated-render-helper.md',
11+
},
12+
fixable: null,
13+
schema: [],
14+
messages: {
15+
deprecated:
16+
'The render helper is deprecated in favor of using components. See https://emberjs.com/deprecations/v2.x/#toc_code-render-code-helper',
17+
},
18+
},
19+
20+
create(context) {
21+
function checkForRender(node) {
22+
if (
23+
node.path &&
24+
node.path.type === 'GlimmerPathExpression' &&
25+
node.path.original === 'render'
26+
) {
27+
context.report({
28+
node,
29+
messageId: 'deprecated',
30+
});
31+
}
32+
}
33+
34+
return {
35+
GlimmerMustacheStatement(node) {
36+
checkForRender(node);
37+
},
38+
39+
GlimmerBlockStatement(node) {
40+
checkForRender(node);
41+
},
42+
};
43+
},
44+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const rule = require('../../../lib/rules/template-deprecated-render-helper');
2+
const RuleTester = require('eslint').RuleTester;
3+
4+
const ruleTester = new RuleTester({
5+
parser: require.resolve('ember-eslint-parser'),
6+
parserOptions: { ecmaVersion: 2022, sourceType: 'module' },
7+
});
8+
9+
ruleTester.run('template-deprecated-render-helper', rule, {
10+
valid: ['<template><MyComponent /></template>', '<template>{{this.render}}</template>'],
11+
invalid: [
12+
{
13+
code: '<template>{{render "user"}}</template>',
14+
output: null,
15+
errors: [{ messageId: 'deprecated' }],
16+
},
17+
],
18+
});

0 commit comments

Comments
 (0)