From 22b87781599ac138f02600c309a7809e8cd34d15 Mon Sep 17 00:00:00 2001 From: baseballyama Date: Thu, 15 May 2025 21:36:26 +0900 Subject: [PATCH 1/3] feat(sort-attributes): support {@attach} --- docs-svelte-kit/package.json | 2 +- packages/eslint-plugin-svelte/package.json | 4 ++-- .../eslint-plugin-svelte/src/utils/ast-utils.ts | 5 ++++- .../sort-attributes/invalid/attach-tag-errors.yaml | 4 ++++ .../invalid/attach-tag-input.svelte | 14 ++++++++++++++ .../invalid/attach-tag-output.svelte | 14 ++++++++++++++ .../sort-attributes/valid/attach-tag-input.svelte | 14 ++++++++++++++ 7 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-errors.yaml create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-input.svelte create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-output.svelte create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-input.svelte diff --git a/docs-svelte-kit/package.json b/docs-svelte-kit/package.json index 6137c3995..cc6caaf32 100644 --- a/docs-svelte-kit/package.json +++ b/docs-svelte-kit/package.json @@ -56,7 +56,7 @@ "sass": "^1.81.0", "source-map-js": "^1.2.1", "stylus": "^0.64.0", - "svelte": "^5.2.10", + "svelte": "^5.30.1", "svelte-adapter-ghpages": "0.2.2", "twoslash-eslint": "^0.3.0", "twoslash-protocol": "^0.3.0", diff --git a/packages/eslint-plugin-svelte/package.json b/packages/eslint-plugin-svelte/package.json index 7fbaf0d9a..14759b1e1 100644 --- a/packages/eslint-plugin-svelte/package.json +++ b/packages/eslint-plugin-svelte/package.json @@ -64,7 +64,7 @@ "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^7.0.0", "semver": "^7.6.3", - "svelte-eslint-parser": "^1.1.1" + "svelte-eslint-parser": "^1.2.0" }, "devDependencies": { "@babel/core": "^7.26.0", @@ -95,7 +95,7 @@ "sass": "^1.81.0", "source-map-js": "^1.2.1", "stylus": "^0.64.0", - "svelte": "^5.2.9", + "svelte": "^5.30.1", "svelte-i18n": "^4.0.1", "tsx": "^4.19.2", "type-coverage": "^2.29.7", diff --git a/packages/eslint-plugin-svelte/src/utils/ast-utils.ts b/packages/eslint-plugin-svelte/src/utils/ast-utils.ts index dd426e137..ca0288690 100644 --- a/packages/eslint-plugin-svelte/src/utils/ast-utils.ts +++ b/packages/eslint-plugin-svelte/src/utils/ast-utils.ts @@ -462,7 +462,8 @@ export function getAttributeKeyText( | SvAST.SvelteStyleDirective | SvAST.SvelteDirective | SvAST.SvelteSpecialDirective - | SvAST.SvelteGenericsDirective, + | SvAST.SvelteGenericsDirective + | SvAST.SvelteAttachTag, context: RuleContext ): string { switch (node.type) { @@ -480,6 +481,8 @@ export function getAttributeKeyText( node.key.modifiers.length ? `|${node.key.modifiers.join('|')}` : '' }`; } + case 'SvelteAttachTag': + return '@attach'; default: throw new Error( `Unknown node type: ${ diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-errors.yaml new file mode 100644 index 000000000..5972a097c --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-errors.yaml @@ -0,0 +1,4 @@ +- message: Attribute '@attach' should go before 'foo'. + line: 14 + column: 10 + suggestions: null diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-input.svelte new file mode 100644 index 000000000..5adcffbca --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-input.svelte @@ -0,0 +1,14 @@ + + +
...
\ No newline at end of file diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-output.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-output.svelte new file mode 100644 index 000000000..02c44ab90 --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-output.svelte @@ -0,0 +1,14 @@ + + +
...
\ No newline at end of file diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-input.svelte new file mode 100644 index 000000000..e1bc8a5ba --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-input.svelte @@ -0,0 +1,14 @@ + + +
...
\ No newline at end of file From deeff734acea30a108129b95f19aa1c9659dc5b1 Mon Sep 17 00:00:00 2001 From: baseballyama Date: Thu, 15 May 2025 21:37:05 +0900 Subject: [PATCH 2/3] add changeset --- .changeset/dry-facts-eat.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/dry-facts-eat.md diff --git a/.changeset/dry-facts-eat.md b/.changeset/dry-facts-eat.md new file mode 100644 index 000000000..04e4211fa --- /dev/null +++ b/.changeset/dry-facts-eat.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-svelte': minor +--- + +feat(sort-attributes): support `{@attach}` From 9d400a2598381ec8629387967de8e34ba2c499b4 Mon Sep 17 00:00:00 2001 From: baseballyama Date: Thu, 15 May 2025 22:45:26 +0900 Subject: [PATCH 3/3] fix types --- packages/eslint-plugin-svelte/src/meta.ts | 4 ++-- packages/eslint-plugin-svelte/src/utils/ast-utils.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-svelte/src/meta.ts b/packages/eslint-plugin-svelte/src/meta.ts index 65a367b45..d34775edc 100644 --- a/packages/eslint-plugin-svelte/src/meta.ts +++ b/packages/eslint-plugin-svelte/src/meta.ts @@ -1,5 +1,5 @@ // IMPORTANT! // This file has been automatically generated, // in order to update its content execute "pnpm run update" -export const name = 'eslint-plugin-svelte' as const; -export const version = '3.6.0' as const; +export const name = 'eslint-plugin-svelte'; +export const version = '3.6.0'; diff --git a/packages/eslint-plugin-svelte/src/utils/ast-utils.ts b/packages/eslint-plugin-svelte/src/utils/ast-utils.ts index ca0288690..bff6c0951 100644 --- a/packages/eslint-plugin-svelte/src/utils/ast-utils.ts +++ b/packages/eslint-plugin-svelte/src/utils/ast-utils.ts @@ -559,6 +559,7 @@ export function findClassesInAttribute( | SvAST.SvelteStyleDirective | SvAST.SvelteSpecialDirective | SvAST.SvelteGenericsDirective + | SvAST.SvelteAttachTag ): string[] { if (attribute.type === 'SvelteAttribute' && attribute.key.name === 'class') { return attribute.value.flatMap((value) =>