From 563fc56fef85ea1262e26c57e9d8707df3927250 Mon Sep 17 00:00:00 2001 From: Andrey Sitnik Date: Fri, 31 Oct 2025 18:11:00 +0000 Subject: [PATCH 1/2] fix(require-event-prefix): ignore getters --- docs/rules/require-event-prefix.md | 5 ++++- .../src/rules/require-event-prefix.ts | 1 + .../require-event-prefix/valid/get-prefix01-input.svelte | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/get-prefix01-input.svelte diff --git a/docs/rules/require-event-prefix.md b/docs/rules/require-event-prefix.md index 9d4d2861c..e25e9197a 100644 --- a/docs/rules/require-event-prefix.md +++ b/docs/rules/require-event-prefix.md @@ -14,6 +14,8 @@ since: 'v3.6.0' Starting with Svelte 5, component events are just component props that are functions and so can be called like any function. Events for HTML elements all have their name begin with "on" (e.g. `onclick`). This rule enforces that all component events (i.e. function props) also begin with "on". +Props that start with "get" are considered getter functions and are automatically excluded from this rule, as they are not events. + ```svelte @@ -25,9 +27,10 @@ Starting with Svelte 5, component events are just component props that are funct interface Props { regularProp: string; onclick(): void; + getHref(value: any): string; } - let { regularProp, onclick }: Props = $props(); + let { regularProp, onclick, getHref }: Props = $props(); ``` diff --git a/packages/eslint-plugin-svelte/src/rules/require-event-prefix.ts b/packages/eslint-plugin-svelte/src/rules/require-event-prefix.ts index ed3c3ad08..96bd54309 100644 --- a/packages/eslint-plugin-svelte/src/rules/require-event-prefix.ts +++ b/packages/eslint-plugin-svelte/src/rules/require-event-prefix.ts @@ -60,6 +60,7 @@ export default createRule('require-event-prefix', { if ( isFunctionLike(property, tsTools) && !property.getName().startsWith('on') && + !property.getName().startsWith('get') && (checkAsyncFunctions || !isFunctionAsync(property, tsTools)) ) { const declarationTsNode = property.getDeclarations()?.[0]; diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/get-prefix01-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/get-prefix01-input.svelte new file mode 100644 index 000000000..958aff1fc --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/require-event-prefix/valid/get-prefix01-input.svelte @@ -0,0 +1,8 @@ + From 1ba702829185ae38a4c4559032d19d9f12582d11 Mon Sep 17 00:00:00 2001 From: Andrey Sitnik Date: Fri, 31 Oct 2025 18:18:36 +0000 Subject: [PATCH 2/2] Add changeset --- .changeset/pink-walls-fall.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pink-walls-fall.md diff --git a/.changeset/pink-walls-fall.md b/.changeset/pink-walls-fall.md new file mode 100644 index 000000000..537bb152d --- /dev/null +++ b/.changeset/pink-walls-fall.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-svelte': patch +--- + +fix(require-event-prefix) ignore props start with "get"