From df5843e706b1d3a1a55c429d205b1060c2ac0c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20D=C4=9Bdi=C4=8D?= Date: Fri, 22 Nov 2024 16:36:44 +0100 Subject: [PATCH] chore(consistent-selector-style): added rule scaffolding --- .changeset/early-trainers-know.md | 5 ++ README.md | 1 + docs/rules.md | 1 + docs/rules/consistent-selector-style.md | 51 +++++++++++++++++++ .../eslint-plugin-svelte/src/rule-types.ts | 5 ++ .../src/rules/consistent-selector-style.ts | 17 +++++++ .../eslint-plugin-svelte/src/utils/rules.ts | 2 + .../src/rules/consistent-selector-style.ts | 12 +++++ 8 files changed, 94 insertions(+) create mode 100644 .changeset/early-trainers-know.md create mode 100644 docs/rules/consistent-selector-style.md create mode 100644 packages/eslint-plugin-svelte/src/rules/consistent-selector-style.ts create mode 100644 packages/eslint-plugin-svelte/tests/src/rules/consistent-selector-style.ts diff --git a/.changeset/early-trainers-know.md b/.changeset/early-trainers-know.md new file mode 100644 index 000000000..f8e3daf4a --- /dev/null +++ b/.changeset/early-trainers-know.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-svelte': minor +--- + +feat: added the consistent-selector-style rule diff --git a/README.md b/README.md index 9682cbf66..de16ae675 100644 --- a/README.md +++ b/README.md @@ -439,6 +439,7 @@ These rules relate to style guidelines, and are therefore quite subjective: | Rule ID | Description | | |:--------|:------------|:---| +| [svelte/consistent-selector-style](https://sveltejs.github.io/eslint-plugin-svelte/rules/consistent-selector-style/) | enforce a consistent style for CSS selectors | | | [svelte/derived-has-same-inputs-outputs](https://sveltejs.github.io/eslint-plugin-svelte/rules/derived-has-same-inputs-outputs/) | derived store should use same variable names between values and callback | | | [svelte/first-attribute-linebreak](https://sveltejs.github.io/eslint-plugin-svelte/rules/first-attribute-linebreak/) | enforce the location of first attribute | :wrench: | | [svelte/html-closing-bracket-new-line](https://sveltejs.github.io/eslint-plugin-svelte/rules/html-closing-bracket-new-line/) | Require or disallow a line break before tag's closing brackets | :wrench: | diff --git a/docs/rules.md b/docs/rules.md index fb067e57c..1e73b0a61 100644 --- a/docs/rules.md +++ b/docs/rules.md @@ -76,6 +76,7 @@ These rules relate to style guidelines, and are therefore quite subjective: | Rule ID | Description | | | :------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | :------- | +| [svelte/consistent-selector-style](./rules/consistent-selector-style.md) | enforce a consistent style for CSS selectors | | | [svelte/derived-has-same-inputs-outputs](./rules/derived-has-same-inputs-outputs.md) | derived store should use same variable names between values and callback | | | [svelte/first-attribute-linebreak](./rules/first-attribute-linebreak.md) | enforce the location of first attribute | :wrench: | | [svelte/html-closing-bracket-new-line](./rules/html-closing-bracket-new-line.md) | Require or disallow a line break before tag's closing brackets | :wrench: | diff --git a/docs/rules/consistent-selector-style.md b/docs/rules/consistent-selector-style.md new file mode 100644 index 000000000..0f6d943c6 --- /dev/null +++ b/docs/rules/consistent-selector-style.md @@ -0,0 +1,51 @@ +--- +pageClass: 'rule-details' +sidebarDepth: 0 +title: 'svelte/consistent-selector-style' +description: 'enforce a consistent style for CSS selectors' +--- + +# svelte/consistent-selector-style + +> enforce a consistent style for CSS selectors + +- :exclamation: **_This rule has not been released yet._** + +## :book: Rule Details + +This rule reports ???. + + + + + +```svelte + + + + + +``` + + + +## :wrench: Options + +```json +{ + "svelte/consistent-selector-style": ["error", {}] +} +``` + +- + +## :books: Further Reading + +- + +## :mag: Implementation + +- [Rule source](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/src/rules/consistent-selector-style.ts) +- [Test source](https://github.com/sveltejs/eslint-plugin-svelte/blob/main/packages/eslint-plugin-svelte/tests/src/rules/consistent-selector-style.ts) diff --git a/packages/eslint-plugin-svelte/src/rule-types.ts b/packages/eslint-plugin-svelte/src/rule-types.ts index 8e747b6e4..2490cccb5 100644 --- a/packages/eslint-plugin-svelte/src/rule-types.ts +++ b/packages/eslint-plugin-svelte/src/rule-types.ts @@ -34,6 +34,11 @@ export interface RuleOptions { * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/comment-directive/ */ 'svelte/comment-directive'?: Linter.RuleEntry + /** + * enforce a consistent style for CSS selectors + * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/consistent-selector-style/ + */ + 'svelte/consistent-selector-style'?: Linter.RuleEntry<[]> /** * derived store should use same variable names between values and callback * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/derived-has-same-inputs-outputs/ diff --git a/packages/eslint-plugin-svelte/src/rules/consistent-selector-style.ts b/packages/eslint-plugin-svelte/src/rules/consistent-selector-style.ts new file mode 100644 index 000000000..ad89e96f9 --- /dev/null +++ b/packages/eslint-plugin-svelte/src/rules/consistent-selector-style.ts @@ -0,0 +1,17 @@ +import { createRule } from '../utils'; + +export default createRule('consistent-selector-style', { + meta: { + docs: { + description: 'enforce a consistent style for CSS selectors', + category: 'Stylistic Issues', + recommended: false + }, + schema: [], + messages: {}, + type: 'suggestion' + }, + create(context) { + return {}; + } +}); diff --git a/packages/eslint-plugin-svelte/src/utils/rules.ts b/packages/eslint-plugin-svelte/src/utils/rules.ts index 5bb5a080c..2c09b33aa 100644 --- a/packages/eslint-plugin-svelte/src/utils/rules.ts +++ b/packages/eslint-plugin-svelte/src/utils/rules.ts @@ -6,6 +6,7 @@ import typescriptEslintNoUnnecessaryCondition from '../rules/@typescript-eslint/ import blockLang from '../rules/block-lang'; import buttonHasType from '../rules/button-has-type'; import commentDirective from '../rules/comment-directive'; +import consistentSelectorStyle from '../rules/consistent-selector-style'; import derivedHasSameInputsOutputs from '../rules/derived-has-same-inputs-outputs'; import experimentalRequireSlotTypes from '../rules/experimental-require-slot-types'; import experimentalRequireStrictEvents from '../rules/experimental-require-strict-events'; @@ -73,6 +74,7 @@ export const rules = [ blockLang, buttonHasType, commentDirective, + consistentSelectorStyle, derivedHasSameInputsOutputs, experimentalRequireSlotTypes, experimentalRequireStrictEvents, diff --git a/packages/eslint-plugin-svelte/tests/src/rules/consistent-selector-style.ts b/packages/eslint-plugin-svelte/tests/src/rules/consistent-selector-style.ts new file mode 100644 index 000000000..edd626103 --- /dev/null +++ b/packages/eslint-plugin-svelte/tests/src/rules/consistent-selector-style.ts @@ -0,0 +1,12 @@ +import { RuleTester } from '../../utils/eslint-compat'; +import rule from '../../../src/rules/consistent-selector-style'; +import { loadTestCases } from '../../utils/utils'; + +const tester = new RuleTester({ + languageOptions: { + ecmaVersion: 2020, + sourceType: 'module' + } +}); + +tester.run('consistent-selector-style', rule as any, loadTestCases('consistent-selector-style'));