Skip to content

Commit 9aea737

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

3 files changed

Lines changed: 87 additions & 0 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# ember/template-deprecated-render-helper
2+
3+
💼 This rule is enabled in the following [configs](https://github.com/ember-cli/eslint-plugin-ember#-configurations): `strict-gjs`, `strict-gts`.
4+
5+
<!-- end auto-generated rule header -->
6+
7+
Disallows the {{render}} helper which is deprecated.
8+
9+
## Examples
10+
11+
Incorrect:
12+
13+
```gjs
14+
<template>{{render "user"}}</template>
15+
```
16+
17+
Correct:
18+
19+
```gjs
20+
<template><User /></template>
21+
```
22+
23+
## References
24+
25+
- [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)