diff --git a/.changeset/blue-panthers-run.md b/.changeset/blue-panthers-run.md new file mode 100644 index 000000000..afb628d0a --- /dev/null +++ b/.changeset/blue-panthers-run.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-svelte': patch +--- + +fix: support each blocks without an item diff --git a/packages/eslint-plugin-svelte/src/rules/require-each-key.ts b/packages/eslint-plugin-svelte/src/rules/require-each-key.ts index 00a34f5f8..7303427c4 100644 --- a/packages/eslint-plugin-svelte/src/rules/require-each-key.ts +++ b/packages/eslint-plugin-svelte/src/rules/require-each-key.ts @@ -15,7 +15,9 @@ export default createRule('require-each-key', { create(context) { return { SvelteEachBlock(node: AST.SvelteEachBlock) { - if (node.key == null) { + // No need a `key` if an each blocks without an item + // see: https://svelte.dev/docs/svelte/each#Each-blocks-without-an-item + if (node.context != null && node.key == null) { context.report({ node, messageId: 'expectedKey' diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-each-key/valid/svelte5/_requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-each-key/valid/svelte5/_requirements.json new file mode 100644 index 000000000..0192b1098 --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-each-key/valid/svelte5/_requirements.json @@ -0,0 +1,3 @@ +{ + "svelte": ">=5.0.0-0" +} diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-each-key/valid/svelte5/each-blocks-without-an-item-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-each-key/valid/svelte5/each-blocks-without-an-item-input.svelte new file mode 100644 index 000000000..e3310ffe8 --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-each-key/valid/svelte5/each-blocks-without-an-item-input.svelte @@ -0,0 +1,7 @@ +
+ {#each { length: 8 }, rank} + {#each { length: 8 }} + {rank} + {/each} + {/each} +