From 2dccc5ba70fc34d2e093b813030da37c1a2df524 Mon Sep 17 00:00:00 2001 From: Rel1cx Date: Wed, 15 Oct 2025 02:09:00 +0800 Subject: [PATCH] refactor(shared): Refactor plugin helpers - Move into each plugin --- .../src/utils/create-rule.ts | 8 ++++++-- .../src/utils/create-rule.ts | 8 ++++++-- .../src/utils/create-rule.ts | 8 ++++++-- .../src/utils/create-rule.ts | 8 ++++++-- .../src/utils/create-rule.ts | 8 ++++++-- .../eslint-plugin-react-x/src/utils/create-rule.ts | 8 ++++++-- .../{get-config-adapters.ts => config-adapters.ts} | 0 packages/shared/src/get-doc-url.ts | 14 -------------- packages/shared/src/index.ts | 5 ++--- .../src/{get-react-version.ts => react-version.ts} | 0 packages/shared/src/settings.ts | 2 +- 11 files changed, 39 insertions(+), 30 deletions(-) rename packages/shared/src/{get-config-adapters.ts => config-adapters.ts} (100%) delete mode 100644 packages/shared/src/get-doc-url.ts rename packages/shared/src/{get-react-version.ts => react-version.ts} (100%) diff --git a/packages/plugins/eslint-plugin-react-debug/src/utils/create-rule.ts b/packages/plugins/eslint-plugin-react-debug/src/utils/create-rule.ts index 2461cb78b5..8471012470 100644 --- a/packages/plugins/eslint-plugin-react-debug/src/utils/create-rule.ts +++ b/packages/plugins/eslint-plugin-react-debug/src/utils/create-rule.ts @@ -1,4 +1,8 @@ -import { getDocsUrl } from "@eslint-react/shared"; +import { WEBSITE_URL } from "@eslint-react/shared"; import { ESLintUtils } from "@typescript-eslint/utils"; -export const createRule = ESLintUtils.RuleCreator(getDocsUrl("debug")); +function getDocsUrl(ruleName: string) { + return `${WEBSITE_URL}/docs/rules/debug-${ruleName}`; +} + +export const createRule = ESLintUtils.RuleCreator(getDocsUrl); diff --git a/packages/plugins/eslint-plugin-react-dom/src/utils/create-rule.ts b/packages/plugins/eslint-plugin-react-dom/src/utils/create-rule.ts index 979823e3e2..26191e33ba 100644 --- a/packages/plugins/eslint-plugin-react-dom/src/utils/create-rule.ts +++ b/packages/plugins/eslint-plugin-react-dom/src/utils/create-rule.ts @@ -1,4 +1,8 @@ -import { getDocsUrl } from "@eslint-react/shared"; +import { WEBSITE_URL } from "@eslint-react/shared"; import { ESLintUtils } from "@typescript-eslint/utils"; -export const createRule = ESLintUtils.RuleCreator(getDocsUrl("dom")); +function getDocsUrl(ruleName: string) { + return `${WEBSITE_URL}/docs/rules/dom-${ruleName}`; +} + +export const createRule = ESLintUtils.RuleCreator(getDocsUrl); diff --git a/packages/plugins/eslint-plugin-react-hooks-extra/src/utils/create-rule.ts b/packages/plugins/eslint-plugin-react-hooks-extra/src/utils/create-rule.ts index 19aed6511b..bdc4388b57 100644 --- a/packages/plugins/eslint-plugin-react-hooks-extra/src/utils/create-rule.ts +++ b/packages/plugins/eslint-plugin-react-hooks-extra/src/utils/create-rule.ts @@ -1,4 +1,8 @@ -import { getDocsUrl } from "@eslint-react/shared"; +import { WEBSITE_URL } from "@eslint-react/shared"; import { ESLintUtils } from "@typescript-eslint/utils"; -export const createRule = ESLintUtils.RuleCreator(getDocsUrl("hooks-extra")); +function getDocsUrl(ruleName: string) { + return `${WEBSITE_URL}/docs/rules/hooks-extra-${ruleName}`; +} + +export const createRule = ESLintUtils.RuleCreator(getDocsUrl); diff --git a/packages/plugins/eslint-plugin-react-naming-convention/src/utils/create-rule.ts b/packages/plugins/eslint-plugin-react-naming-convention/src/utils/create-rule.ts index b6530c8ed8..f29cfead89 100644 --- a/packages/plugins/eslint-plugin-react-naming-convention/src/utils/create-rule.ts +++ b/packages/plugins/eslint-plugin-react-naming-convention/src/utils/create-rule.ts @@ -1,4 +1,8 @@ -import { getDocsUrl } from "@eslint-react/shared"; +import { WEBSITE_URL } from "@eslint-react/shared"; import { ESLintUtils } from "@typescript-eslint/utils"; -export const createRule = ESLintUtils.RuleCreator(getDocsUrl("naming-convention")); +function getDocsUrl(ruleName: string) { + return `${WEBSITE_URL}/docs/rules/naming-convention-${ruleName}`; +} + +export const createRule = ESLintUtils.RuleCreator(getDocsUrl); diff --git a/packages/plugins/eslint-plugin-react-web-api/src/utils/create-rule.ts b/packages/plugins/eslint-plugin-react-web-api/src/utils/create-rule.ts index 63e5dfd2ac..cc494ba0a4 100644 --- a/packages/plugins/eslint-plugin-react-web-api/src/utils/create-rule.ts +++ b/packages/plugins/eslint-plugin-react-web-api/src/utils/create-rule.ts @@ -1,4 +1,8 @@ -import { getDocsUrl } from "@eslint-react/shared"; +import { WEBSITE_URL } from "@eslint-react/shared"; import { ESLintUtils } from "@typescript-eslint/utils"; -export const createRule = ESLintUtils.RuleCreator(getDocsUrl("web-api")); +function getDocsUrl(ruleName: string) { + return `${WEBSITE_URL}/docs/rules/web-api-${ruleName}`; +} + +export const createRule = ESLintUtils.RuleCreator(getDocsUrl); diff --git a/packages/plugins/eslint-plugin-react-x/src/utils/create-rule.ts b/packages/plugins/eslint-plugin-react-x/src/utils/create-rule.ts index c508a0302f..af836cf321 100644 --- a/packages/plugins/eslint-plugin-react-x/src/utils/create-rule.ts +++ b/packages/plugins/eslint-plugin-react-x/src/utils/create-rule.ts @@ -1,4 +1,8 @@ -import { getDocsUrl } from "@eslint-react/shared"; +import { WEBSITE_URL } from "@eslint-react/shared"; import { ESLintUtils } from "@typescript-eslint/utils"; -export const createRule = ESLintUtils.RuleCreator(getDocsUrl("x")); +function getDocsUrl(ruleName: string) { + return `${WEBSITE_URL}/docs/rules/${ruleName}`; +} + +export const createRule = ESLintUtils.RuleCreator(getDocsUrl); diff --git a/packages/shared/src/get-config-adapters.ts b/packages/shared/src/config-adapters.ts similarity index 100% rename from packages/shared/src/get-config-adapters.ts rename to packages/shared/src/config-adapters.ts diff --git a/packages/shared/src/get-doc-url.ts b/packages/shared/src/get-doc-url.ts deleted file mode 100644 index c5983cb421..0000000000 --- a/packages/shared/src/get-doc-url.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { WEBSITE_URL } from "./constants"; - -/** - * Get the URL for the documentation of a rule in a plugin. - * @internal - * @param pluginName The name of the plugin. - * @returns The URL for the documentation of a rule. - */ -export const getDocsUrl = (pluginName: string) => (ruleName: string) => { - if (pluginName === "x") { - return `${WEBSITE_URL}/docs/rules/${ruleName}`; - } - return `${WEBSITE_URL}/docs/rules/${pluginName}-${ruleName}`; -}; diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 632aa70f2e..18894d1149 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -1,9 +1,8 @@ export * from "./_id"; export * from "./_require"; +export * from "./config-adapters"; export * from "./constants"; -export * from "./get-config-adapters"; -export * from "./get-doc-url"; -export * from "./get-react-version"; +export * from "./react-version"; export * from "./regexp"; export * from "./report"; export * from "./settings"; diff --git a/packages/shared/src/get-react-version.ts b/packages/shared/src/react-version.ts similarity index 100% rename from packages/shared/src/get-react-version.ts rename to packages/shared/src/react-version.ts diff --git a/packages/shared/src/settings.ts b/packages/shared/src/settings.ts index 785f1aa505..8715cd812d 100644 --- a/packages/shared/src/settings.ts +++ b/packages/shared/src/settings.ts @@ -8,7 +8,7 @@ import type { PartialDeep } from "type-fest"; import { P, match } from "ts-pattern"; import { z } from "zod/v4"; -import { getReactVersion } from "./get-react-version"; +import { getReactVersion } from "./react-version"; import type { RuleContext } from "./types"; // ===== Schema Definitions =====