svelte/no-unused-props does not always respect aliases
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused-config.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused-config.json
new file mode 100644
index 000000000..57afa3f3f
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused-config.json
@@ -0,0 +1,7 @@
+{
+ "options": [
+ {
+ "allowUnusedNestedProperties": true
+ }
+ ]
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused-input.svelte
new file mode 100644
index 000000000..8293761a6
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused-input.svelte
@@ -0,0 +1,10 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused2-config.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused2-config.json
new file mode 100644
index 000000000..57afa3f3f
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused2-config.json
@@ -0,0 +1,7 @@
+{
+ "options": [
+ {
+ "allowUnusedNestedProperties": true
+ }
+ ]
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused2-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused2-input.svelte
new file mode 100644
index 000000000..0d38a3136
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-props/valid/nested-unused2-input.svelte
@@ -0,0 +1,10 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte
new file mode 100644
index 000000000..d612deb43
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-input.svelte
@@ -0,0 +1,15 @@
+
+
+{#if MyComponent}
+
+
+{/if}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json
new file mode 100644
index 000000000..b224b893c
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/reactive-component-requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": "^4"
+}
\ No newline at end of file
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/svelte-ignore-comma-separated-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/svelte-ignore-comma-separated-input.svelte
new file mode 100644
index 000000000..7e2559f55
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/svelte-ignore-comma-separated-input.svelte
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/svelte-ignore-comma-separated-requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/svelte-ignore-comma-separated-requirements.json
new file mode 100644
index 000000000..0192b1098
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/no-unused-svelte-ignore/valid/svelte-ignore-comma-separated-requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0-0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-const/valid/1238/_config.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-const/valid/1238/_config.json
new file mode 100644
index 000000000..88200a87e
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-const/valid/1238/_config.json
@@ -0,0 +1,8 @@
+{
+ "options": [
+ {
+ "destructuring": "all",
+ "additionalProperties": true
+ }
+ ]
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-const/valid/1238/input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-const/valid/1238/input.svelte
new file mode 100644
index 000000000..190a18037
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-const/valid/1238/input.svelte
@@ -0,0 +1 @@
+123
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/_requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/_requirements.json
new file mode 100644
index 000000000..0192b1098
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/_requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0-0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic1-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic1-errors.yaml
new file mode 100644
index 000000000..600473adf
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic1-errors.yaml
@@ -0,0 +1,15 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic1-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic1-input.svelte
new file mode 100644
index 000000000..51523f5c3
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic1-input.svelte
@@ -0,0 +1,10 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic2-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic2-errors.yaml
new file mode 100644
index 000000000..b89390b86
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic2-errors.yaml
@@ -0,0 +1,15 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic2-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic2-input.svelte
new file mode 100644
index 000000000..e8b6769c6
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/basic2-input.svelte
@@ -0,0 +1,10 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre1-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre1-errors.yaml
new file mode 100644
index 000000000..600473adf
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre1-errors.yaml
@@ -0,0 +1,15 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre1-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre1-input.svelte
new file mode 100644
index 000000000..fdafad808
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre1-input.svelte
@@ -0,0 +1,10 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre2-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre2-errors.yaml
new file mode 100644
index 000000000..b89390b86
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre2-errors.yaml
@@ -0,0 +1,15 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre2-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre2-input.svelte
new file mode 100644
index 000000000..ee0e91b2b
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/effect-pre2-input.svelte
@@ -0,0 +1,10 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign1-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign1-errors.yaml
new file mode 100644
index 000000000..f443ce89a
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign1-errors.yaml
@@ -0,0 +1,19 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign1-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign1-input.svelte
new file mode 100644
index 000000000..52fce48ad
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign1-input.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign2-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign2-errors.yaml
new file mode 100644
index 000000000..d77136489
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign2-errors.yaml
@@ -0,0 +1,19 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+ {
+ newAlbumName = value;
+ }}
+ />
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign2-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign2-input.svelte
new file mode 100644
index 000000000..9f42e657a
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign2-input.svelte
@@ -0,0 +1,14 @@
+
+
+ {
+ newAlbumName = value;
+ }}
+/>
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign3-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign3-errors.yaml
new file mode 100644
index 000000000..0118d5e29
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign3-errors.yaml
@@ -0,0 +1,38 @@
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
+- message: Prefer using writable $derived instead of $state and $effect
+ line: 4
+ column: 6
+ suggestions:
+ - desc: Rewrite $state and $effect to $derived
+ messageId: suggestRewrite
+ output: |
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign3-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign3-input.svelte
new file mode 100644
index 000000000..bb6169e60
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/invalid/multiple-reassign3-input.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/_requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/_requirements.json
new file mode 100644
index 000000000..0192b1098
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/_requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0-0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/condition1-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/condition1-input.svelte
new file mode 100644
index 000000000..57bd65848
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/condition1-input.svelte
@@ -0,0 +1,13 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/condition2-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/condition2-input.svelte
new file mode 100644
index 000000000..9083881f1
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/prefer-writable-derived/valid/condition2-input.svelte
@@ -0,0 +1,17 @@
+
+
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/_requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/_requirements.json
new file mode 100644
index 000000000..498661308
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/_requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/_config.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/_config.json
new file mode 100644
index 000000000..a0f52ed6e
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/_config.json
@@ -0,0 +1,3 @@
+{
+ "options": [{ "checkAsyncFunctions": true }]
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/_requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/_requirements.json
new file mode 100644
index 000000000..498661308
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/_requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async-arrow01-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async-arrow01-errors.yaml
new file mode 100644
index 000000000..4c26d4e62
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async-arrow01-errors.yaml
@@ -0,0 +1,4 @@
+- message: Component event name must start with "on".
+ line: 3
+ column: 5
+ suggestions: null
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async-arrow01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async-arrow01-input.svelte
new file mode 100644
index 000000000..0b0502984
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async-arrow01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async01-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async01-errors.yaml
new file mode 100644
index 000000000..4c26d4e62
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async01-errors.yaml
@@ -0,0 +1,4 @@
+- message: Component event name must start with "on".
+ line: 3
+ column: 5
+ suggestions: null
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async01-input.svelte
new file mode 100644
index 000000000..4f6f3ee49
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/checkAsyncFunctions/async01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-arrow01-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-arrow01-errors.yaml
new file mode 100644
index 000000000..4c26d4e62
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-arrow01-errors.yaml
@@ -0,0 +1,4 @@
+- message: Component event name must start with "on".
+ line: 3
+ column: 5
+ suggestions: null
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-arrow01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-arrow01-input.svelte
new file mode 100644
index 000000000..7874e51da
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-arrow01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-inline-type01-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-inline-type01-errors.yaml
new file mode 100644
index 000000000..affa6e169
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-inline-type01-errors.yaml
@@ -0,0 +1,4 @@
+- message: Component event name must start with "on".
+ line: 2
+ column: 21
+ suggestions: null
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-inline-type01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-inline-type01-input.svelte
new file mode 100644
index 000000000..3fc3c616b
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix-inline-type01-input.svelte
@@ -0,0 +1,5 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix01-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix01-errors.yaml
new file mode 100644
index 000000000..4c26d4e62
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix01-errors.yaml
@@ -0,0 +1,4 @@
+- message: Component event name must start with "on".
+ line: 3
+ column: 5
+ suggestions: null
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix01-input.svelte
new file mode 100644
index 000000000..036a1d65b
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/invalid/no-prefix01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/_requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/_requirements.json
new file mode 100644
index 000000000..498661308
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/_requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/any01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/any01-input.svelte
new file mode 100644
index 000000000..deeb82509
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/any01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/async01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/async01-input.svelte
new file mode 100644
index 000000000..4f6f3ee49
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/async01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/non-function01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/non-function01-input.svelte
new file mode 100644
index 000000000..d23e387a1
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/non-function01-input.svelte
@@ -0,0 +1,9 @@
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/with-prefix01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/with-prefix01-input.svelte
new file mode 100644
index 000000000..e3396af33
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/with-prefix01-input.svelte
@@ -0,0 +1,9 @@
+
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/invalid/attach-tag-requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-requirements.json
new file mode 100644
index 000000000..1a22befbb
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/invalid/attach-tag-requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": "^5.0.0"
+}
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
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-requirements.json
new file mode 100644
index 000000000..1a22befbb
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/sort-attributes/valid/attach-tag-requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": "^5.0.0"
+}
diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-add-event-listener.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-add-event-listener.ts
new file mode 100644
index 000000000..a2b5928d1
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/src/rules/no-add-event-listener.ts
@@ -0,0 +1,12 @@
+import { RuleTester } from '../../utils/eslint-compat.js';
+import rule from '../../../src/rules/no-add-event-listener.js';
+import { loadTestCases } from '../../utils/utils.js';
+
+const tester = new RuleTester({
+ languageOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module'
+ }
+});
+
+tester.run('no-add-event-listener', rule as any, loadTestCases('no-add-event-listener'));
diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-top-level-browser-globals.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-top-level-browser-globals.ts
new file mode 100644
index 000000000..c13228031
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/src/rules/no-top-level-browser-globals.ts
@@ -0,0 +1,16 @@
+import { RuleTester } from '../../utils/eslint-compat.js';
+import rule from '../../../src/rules/no-top-level-browser-globals.js';
+import { loadTestCases } from '../../utils/utils.js';
+
+const tester = new RuleTester({
+ languageOptions: {
+ ecmaVersion: 'latest',
+ sourceType: 'module'
+ }
+});
+
+tester.run(
+ 'no-top-level-browser-globals',
+ rule as any,
+ loadTestCases('no-top-level-browser-globals')
+);
diff --git a/packages/eslint-plugin-svelte/tests/src/rules/prefer-writable-derived.ts b/packages/eslint-plugin-svelte/tests/src/rules/prefer-writable-derived.ts
new file mode 100644
index 000000000..80e9065a7
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/src/rules/prefer-writable-derived.ts
@@ -0,0 +1,12 @@
+import { RuleTester } from '../../utils/eslint-compat.js';
+import rule from '../../../src/rules/prefer-writable-derived.js';
+import { loadTestCases } from '../../utils/utils.js';
+
+const tester = new RuleTester({
+ languageOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module'
+ }
+});
+
+tester.run('prefer-writable-derived', rule as any, loadTestCases('prefer-writable-derived'));
diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-event-prefix.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-event-prefix.ts
new file mode 100644
index 000000000..7818735b5
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/src/rules/require-event-prefix.ts
@@ -0,0 +1,12 @@
+import { RuleTester } from '../../utils/eslint-compat.js';
+import rule from '../../../src/rules/require-event-prefix.js';
+import { loadTestCases } from '../../utils/utils.js';
+
+const tester = new RuleTester({
+ languageOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module'
+ }
+});
+
+tester.run('require-event-prefix', rule as any, loadTestCases('require-event-prefix'));
diff --git a/packages/eslint-plugin-svelte/tests/utils/eslint-compat.ts b/packages/eslint-plugin-svelte/tests/utils/eslint-compat.ts
index d9d2b73d2..7c9e93fa4 100644
--- a/packages/eslint-plugin-svelte/tests/utils/eslint-compat.ts
+++ b/packages/eslint-plugin-svelte/tests/utils/eslint-compat.ts
@@ -1,3 +1,9 @@
-import { getRuleTester } from 'eslint-compat-utils/rule-tester';
+import * as eslint from 'eslint';
+import * as experimental from 'eslint/use-at-your-own-risk';
-export const RuleTester = getRuleTester();
+type MaybeHasRuleTester = {
+ FlatRuleTester?: typeof eslint.RuleTester;
+};
+
+export const RuleTester =
+ (experimental as never as MaybeHasRuleTester).FlatRuleTester ?? eslint.RuleTester;
diff --git a/packages/eslint-plugin-svelte/tests/utils/utils.ts b/packages/eslint-plugin-svelte/tests/utils/utils.ts
index 845ea656f..cfd4d81a9 100644
--- a/packages/eslint-plugin-svelte/tests/utils/utils.ts
+++ b/packages/eslint-plugin-svelte/tests/utils/utils.ts
@@ -11,18 +11,11 @@ import { Linter } from 'eslint';
import * as svelteParser from 'svelte-eslint-parser';
import * as typescriptParser from '@typescript-eslint/parser';
import Module from 'module';
+import globals from 'globals';
const __dirname = path.dirname(new URL(import.meta.url).pathname);
const require = Module.createRequire(import.meta.url);
-const globals = {
- console: 'readonly',
- setTimeout: 'readonly',
- setInterval: 'readonly',
- queueMicrotask: 'readonly',
- window: 'readonly',
- globalThis: 'readonly'
-};
/**
* Prevents leading spaces in a multiline template literal from appearing in the resulting string
*/
@@ -248,7 +241,7 @@ function writeFixtures(
[`svelte/${ruleName}`]: ['error', ...(options || [])]
},
languageOptions: {
- globals,
+ globals: globals.browser,
ecmaVersion: 2020,
sourceType: 'module',
...verifyConfig?.languageOptions,
@@ -332,7 +325,7 @@ function getConfig(ruleName: string, inputFile: string) {
{
...config,
languageOptions: {
- globals,
+ globals: globals.browser,
ecmaVersion: 2020,
sourceType: 'module',
...config?.languageOptions,
diff --git a/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts b/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts
index e0c9a420a..ae38b30c0 100644
--- a/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts
+++ b/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts
@@ -14,8 +14,8 @@ sidebarDepth: 0
# Available Rules
-:wrench: Indicates that the rule is fixable, and using \`--fix\` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the reported problems.
-:bulb: Indicates that some problems reported by the rule are manually fixable by editor [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).
+:wrench: Indicates that the rule is fixable, and using \`--fix\` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the reported problems.\\
+:bulb: Indicates that some problems reported by the rule are manually fixable by editor [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).\\
:star: Indicates that the rule is included in the \`plugin:svelte/recommended\` config.