File tree 6 files changed +39
-0
lines changed
packages/eslint-plugin-svelte/src
6 files changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' eslint-plugin-svelte ' : minor
3
+ ---
4
+
5
+ feat: added the no-useless-children-snippet rule
Original file line number Diff line number Diff line change @@ -361,6 +361,7 @@ These rules relate to better ways of doing things to help you avoid problems:
361
361
| [ svelte/no-svelte-internal] ( https://sveltejs.github.io/eslint-plugin-svelte/rules/no-svelte-internal/ ) | svelte/internal will be removed in Svelte 6. | |
362
362
| [ 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 | |
363
363
| [ svelte/no-unused-svelte-ignore] ( https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unused-svelte-ignore/ ) | disallow unused svelte-ignore comments | :star : |
364
+ | [ 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 | |
364
365
| [ svelte/no-useless-mustaches] ( https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-mustaches/ ) | disallow unnecessary mustache interpolations | :wrench : |
365
366
| [ 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 : |
366
367
| [ svelte/require-each-key] ( https://sveltejs.github.io/eslint-plugin-svelte/rules/require-each-key/ ) | require keyed ` {#each} ` block | |
Original file line number Diff line number Diff line change @@ -63,6 +63,7 @@ These rules relate to better ways of doing things to help you avoid problems:
63
63
| [ svelte/no-svelte-internal] ( ./rules/no-svelte-internal.md ) | svelte/internal will be removed in Svelte 6. | |
64
64
| [ svelte/no-unused-class-name] ( ./rules/no-unused-class-name.md ) | disallow the use of a class in the template without a corresponding style | |
65
65
| [ svelte/no-unused-svelte-ignore] ( ./rules/no-unused-svelte-ignore.md ) | disallow unused svelte-ignore comments | :star : |
66
+ | [ svelte/no-useless-children-snippet] ( ./rules/no-useless-children-snippet.md ) | disallow explicit children snippet where it's not needed | |
66
67
| [ svelte/no-useless-mustaches] ( ./rules/no-useless-mustaches.md ) | disallow unnecessary mustache interpolations | :wrench : |
67
68
| [ svelte/prefer-destructured-store-props] ( ./rules/prefer-destructured-store-props.md ) | destructure values from object stores for better change tracking & fewer redraws | :bulb : |
68
69
| [ svelte/require-each-key] ( ./rules/require-each-key.md ) | require keyed ` {#each} ` block | |
Original file line number Diff line number Diff line change @@ -254,6 +254,11 @@ export interface RuleOptions {
254
254
* @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unused-svelte-ignore/
255
255
*/
256
256
'svelte/no-unused-svelte-ignore' ?: Linter . RuleEntry < [ ] >
257
+ /**
258
+ * disallow explicit children snippet where it's not needed
259
+ * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-children-snippet/
260
+ */
261
+ 'svelte/no-useless-children-snippet' ?: Linter . RuleEntry < [ ] >
257
262
/**
258
263
* disallow unnecessary mustache interpolations
259
264
* @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-useless-mustaches/
Original file line number Diff line number Diff line change
1
+ import { createRule } from '../utils/index.js' ;
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
+ } ) ;
Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ import noTrailingSpaces from '../rules/no-trailing-spaces.js';
50
50
import noUnknownStyleDirectiveProperty from '../rules/no-unknown-style-directive-property.js' ;
51
51
import noUnusedClassName from '../rules/no-unused-class-name.js' ;
52
52
import noUnusedSvelteIgnore from '../rules/no-unused-svelte-ignore.js' ;
53
+ import noUselessChildrenSnippet from '../rules/no-useless-children-snippet.js' ;
53
54
import noUselessMustaches from '../rules/no-useless-mustaches.js' ;
54
55
import preferClassDirective from '../rules/prefer-class-directive.js' ;
55
56
import preferDestructuredStoreProps from '../rules/prefer-destructured-store-props.js' ;
@@ -118,6 +119,7 @@ export const rules = [
118
119
noUnknownStyleDirectiveProperty ,
119
120
noUnusedClassName ,
120
121
noUnusedSvelteIgnore ,
122
+ noUselessChildrenSnippet ,
121
123
noUselessMustaches ,
122
124
preferClassDirective ,
123
125
preferDestructuredStoreProps ,
You can’t perform that action at this time.
0 commit comments