Skip to content

Commit af7b4e1

Browse files
committed
feat(no-useless-children-snippet): added the rule
1 parent a1b0096 commit af7b4e1

File tree

5 files changed

+34
-0
lines changed

5 files changed

+34
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ These rules relate to better ways of doing things to help you avoid problems:
425425
| [svelte/no-svelte-internal](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-svelte-internal/) | svelte/internal will be removed in Svelte 6. | |
426426
| [svelte/no-unused-class-name](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unused-class-name/) | disallow the use of a class in the template without a corresponding style | |
427427
| [svelte/no-unused-svelte-ignore](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unused-svelte-ignore/) | disallow unused svelte-ignore comments | :star: |
428+
| [svelte/no-useless-children-snippet](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-children-snippet/) | disallow explicit children snippet where it's not needed | |
428429
| [svelte/no-useless-mustaches](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-mustaches/) | disallow unnecessary mustache interpolations | :wrench: |
429430
| [svelte/prefer-destructured-store-props](https://sveltejs.github.io/eslint-plugin-svelte/rules/prefer-destructured-store-props/) | destructure values from object stores for better change tracking & fewer redraws | :bulb: |
430431
| [svelte/require-each-key](https://sveltejs.github.io/eslint-plugin-svelte/rules/require-each-key/) | require keyed `{#each}` block | |

docs/rules.md

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ These rules relate to better ways of doing things to help you avoid problems:
6262
| [svelte/no-svelte-internal](./rules/no-svelte-internal.md) | svelte/internal will be removed in Svelte 6. | |
6363
| [svelte/no-unused-class-name](./rules/no-unused-class-name.md) | disallow the use of a class in the template without a corresponding style | |
6464
| [svelte/no-unused-svelte-ignore](./rules/no-unused-svelte-ignore.md) | disallow unused svelte-ignore comments | :star: |
65+
| [svelte/no-useless-children-snippet](./rules/no-useless-children-snippet.md) | disallow explicit children snippet where it's not needed | |
6566
| [svelte/no-useless-mustaches](./rules/no-useless-mustaches.md) | disallow unnecessary mustache interpolations | :wrench: |
6667
| [svelte/prefer-destructured-store-props](./rules/prefer-destructured-store-props.md) | destructure values from object stores for better change tracking & fewer redraws | :bulb: |
6768
| [svelte/require-each-key](./rules/require-each-key.md) | require keyed `{#each}` block | |

packages/eslint-plugin-svelte/src/rule-types.ts

+5
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,11 @@ export interface RuleOptions {
249249
* @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unused-svelte-ignore/
250250
*/
251251
'svelte/no-unused-svelte-ignore'?: Linter.RuleEntry<[]>
252+
/**
253+
* disallow explicit children snippet where it's not needed
254+
* @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-children-snippet/
255+
*/
256+
'svelte/no-useless-children-snippet'?: Linter.RuleEntry<[]>
252257
/**
253258
* disallow unnecessary mustache interpolations
254259
* @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-mustaches/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { createRule } from '../utils';
2+
3+
export default createRule('no-useless-children-snippet', {
4+
meta: {
5+
docs: {
6+
description: "disallow explicit children snippet where it's not needed",
7+
category: 'Best Practices',
8+
recommended: false
9+
},
10+
schema: [],
11+
messages: {
12+
uselessSnippet: "Found an unnecessary children snippet."
13+
},
14+
type: 'suggestion'
15+
},
16+
create(context) {
17+
return {
18+
SvelteSnippetBlock(node) {
19+
if (node.id.name === "children" && node.params.length === 0) {
20+
context.report({node, messageId: "uselessSnippet"})
21+
}
22+
}
23+
};
24+
}
25+
});

packages/eslint-plugin-svelte/src/utils/rules.ts

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import noTrailingSpaces from '../rules/no-trailing-spaces';
4949
import noUnknownStyleDirectiveProperty from '../rules/no-unknown-style-directive-property';
5050
import noUnusedClassName from '../rules/no-unused-class-name';
5151
import noUnusedSvelteIgnore from '../rules/no-unused-svelte-ignore';
52+
import noUselessChildrenSnippet from '../rules/no-useless-children-snippet';
5253
import noUselessMustaches from '../rules/no-useless-mustaches';
5354
import preferClassDirective from '../rules/prefer-class-directive';
5455
import preferDestructuredStoreProps from '../rules/prefer-destructured-store-props';
@@ -116,6 +117,7 @@ export const rules = [
116117
noUnknownStyleDirectiveProperty,
117118
noUnusedClassName,
118119
noUnusedSvelteIgnore,
120+
noUselessChildrenSnippet,
119121
noUselessMustaches,
120122
preferClassDirective,
121123
preferDestructuredStoreProps,

0 commit comments

Comments
 (0)