From 2e9770566d6a658a0327ad3996523d7742664584 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Wed, 12 Jun 2024 03:58:46 +0200 Subject: [PATCH 1/5] fix(eslint-plugin): use ./dist/util path in rules.d.ts --- packages/eslint-plugin/rules.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/rules.d.ts b/packages/eslint-plugin/rules.d.ts index 8afcb38dca8b..674b54ec5ca3 100644 --- a/packages/eslint-plugin/rules.d.ts +++ b/packages/eslint-plugin/rules.d.ts @@ -37,7 +37,7 @@ This is likely not portable. A type annotation is necessary. ts(2742) import type { RuleModuleWithMetaDocs } from '@typescript-eslint/utils/ts-eslint'; -import type { ESLintPluginDocs, ESLintPluginRuleModule } from './src/util'; +import type { ESLintPluginDocs, ESLintPluginRuleModule } from './dist/util'; export { ESLintPluginDocs, ESLintPluginRuleModule }; From ea7cb79aad66dfc14187960493b32404ecda7e34 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 22 Jun 2024 13:19:02 -0700 Subject: [PATCH 2/5] Fix introduced type complaint --- packages/eslint-plugin/tests/configs.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/configs.test.ts b/packages/eslint-plugin/tests/configs.test.ts index db9130e18011..22da970a907d 100644 --- a/packages/eslint-plugin/tests/configs.test.ts +++ b/packages/eslint-plugin/tests/configs.test.ts @@ -59,14 +59,14 @@ function filterAndMapRuleConfigs({ if (recommendations) { result = result.filter(([, rule]) => { switch (typeof rule.meta.docs?.recommended) { - case 'undefined': - return false; case 'object': return Object.keys(rule.meta.docs.recommended).some(recommended => recommendations.includes(recommended as RuleRecommendation), ); case 'string': return recommendations.includes(rule.meta.docs.recommended); + default: + return false; } }); } From 8878dd4e2d35652af7958a0f86a2eb2d9c4ddf0c Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Jun 2024 12:46:55 -0400 Subject: [PATCH 3/5] test: one more fix for default --- packages/typescript-eslint/tests/configs.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/typescript-eslint/tests/configs.test.ts b/packages/typescript-eslint/tests/configs.test.ts index 6eaeecb6a68a..0a4d8ecfbe45 100644 --- a/packages/typescript-eslint/tests/configs.test.ts +++ b/packages/typescript-eslint/tests/configs.test.ts @@ -63,14 +63,14 @@ function filterAndMapRuleConfigs({ if (recommendations) { result = result.filter(([, rule]) => { switch (typeof rule.meta.docs.recommended) { - case 'undefined': - return false; case 'object': return Object.keys(rule.meta.docs.recommended).some(recommended => recommendations.includes(recommended as RuleRecommendation), ); case 'string': return recommendations.includes(rule.meta.docs.recommended); + default: + return false; } }); } From c76814fd145c6d011d3ee28ae471f8f276f3ef78 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 25 Jun 2024 14:41:43 -0400 Subject: [PATCH 4/5] Move to copying the types, as we don't publish .d.ts --- packages/eslint-plugin/rules.d.ts | 35 +++++++++++++++++-- packages/eslint-plugin/src/util/createRule.ts | 6 ++++ .../plugins/generated-rule-docs/index.ts | 4 +-- packages/website/plugins/utils/rules.ts | 12 +++---- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/packages/eslint-plugin/rules.d.ts b/packages/eslint-plugin/rules.d.ts index 674b54ec5ca3..3d72d1027c99 100644 --- a/packages/eslint-plugin/rules.d.ts +++ b/packages/eslint-plugin/rules.d.ts @@ -35,16 +35,45 @@ This is likely not portable. A type annotation is necessary. ts(2742) ``` */ -import type { RuleModuleWithMetaDocs } from '@typescript-eslint/utils/ts-eslint'; +import type { + RuleModuleWithMetaDocs, + RuleModuleWithMetaDocs, + RuleRecommendation, + RuleRecommendationAcrossConfigs, +} from '@typescript-eslint/utils/ts-eslint'; -import type { ESLintPluginDocs, ESLintPluginRuleModule } from './dist/util'; +export interface ESLintPluginDocs { + /** + * Does the rule extend (or is it based off of) an ESLint code rule? + * Alternately accepts the name of the base rule, in case the rule has been renamed. + * This is only used for documentation purposes. + */ + extendsBaseRule?: boolean | string; -export { ESLintPluginDocs, ESLintPluginRuleModule }; + /** + * If a string config name, which starting config this rule is enabled in. + * If an object, which settings it has enabled in each of those configs. + */ + recommended?: RuleRecommendation | RuleRecommendationAcrossConfigs; + + /** + * Does the rule require us to create a full TypeScript Program in order for it + * to type-check code. This is only used for documentation purposes. + */ + requiresTypeChecking?: boolean; +} + +export type ESLintPluginRuleModule = RuleModuleWithMetaDocs< + string, + readonly unknown[], + ESLintPluginDocs +>; export type TypeScriptESLintRules = Record< string, RuleModuleWithMetaDocs >; + declare const rules: TypeScriptESLintRules; // eslint-disable-next-line import/no-default-export export default rules; diff --git a/packages/eslint-plugin/src/util/createRule.ts b/packages/eslint-plugin/src/util/createRule.ts index b646e814c94a..f6e1362376e1 100644 --- a/packages/eslint-plugin/src/util/createRule.ts +++ b/packages/eslint-plugin/src/util/createRule.ts @@ -5,6 +5,9 @@ import type { RuleRecommendationAcrossConfigs, } from '@typescript-eslint/utils/ts-eslint'; +/** + * This must be kept up-to-date with rules.d.ts. + */ export interface ESLintPluginDocs { /** * Does the rule extend (or is it based off of) an ESLint code rule? @@ -30,6 +33,9 @@ export const createRule = ESLintUtils.RuleCreator( name => `https://typescript-eslint.io/rules/${name}`, ); +/** + * This must be kept up-to-date with rules.d.ts. + */ export type ESLintPluginRuleModule = RuleModuleWithMetaDocs< string, readonly unknown[], diff --git a/packages/website/plugins/generated-rule-docs/index.ts b/packages/website/plugins/generated-rule-docs/index.ts index fd4d8d50efc8..0a7fad8f0d09 100644 --- a/packages/website/plugins/generated-rule-docs/index.ts +++ b/packages/website/plugins/generated-rule-docs/index.ts @@ -2,7 +2,7 @@ import pluginRules from '@typescript-eslint/eslint-plugin/use-at-your-own-risk/r import type { Plugin } from 'unified'; import { nodeIsParent } from '../utils/nodes'; -import { isAnyRuleModuleWithMetaDocs, isVFileWithStem } from '../utils/rules'; +import { isESLintPluginRuleModule, isVFileWithStem } from '../utils/rules'; import { addESLintHashToCodeBlocksMeta } from './addESLintHashToCodeBlocksMeta'; import { createRuleDocsPage } from './createRuleDocsPage'; import { insertBaseRuleReferences } from './insertions/insertBaseRuleReferences'; @@ -21,7 +21,7 @@ export const generatedRuleDocs: Plugin = () => { } const rule = pluginRules[file.stem]; - if (!isAnyRuleModuleWithMetaDocs(rule)) { + if (!isESLintPluginRuleModule(rule)) { return; } diff --git a/packages/website/plugins/utils/rules.ts b/packages/website/plugins/utils/rules.ts index 36412921b215..34a484796d99 100644 --- a/packages/website/plugins/utils/rules.ts +++ b/packages/website/plugins/utils/rules.ts @@ -1,7 +1,5 @@ -import type { - AnyRuleModuleWithMetaDocs, - RuleModule, -} from '@typescript-eslint/utils/ts-eslint'; +import type { ESLintPluginRuleModule } from '@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules'; +import type { RuleModule } from '@typescript-eslint/utils/ts-eslint'; import * as fs from 'fs'; import * as lz from 'lz-string'; import * as path from 'path'; @@ -55,9 +53,9 @@ export function getUrlForRuleTest(ruleName: string): string { throw new Error(`Could not find test file for ${ruleName}.`); } -export function isAnyRuleModuleWithMetaDocs( - rule: RuleModule | undefined, -): rule is AnyRuleModuleWithMetaDocs { +export function isESLintPluginRuleModule( + rule: RuleModule | undefined, +): rule is ESLintPluginRuleModule { return !!rule?.meta.docs; } From b3d2b25f74588d4b0259f0557b8de1e5194c88a2 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 29 Jun 2024 09:19:52 -0400 Subject: [PATCH 5/5] import from rules, heck yes --- packages/eslint-plugin/src/util/createRule.ts | 38 +------------------ 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/packages/eslint-plugin/src/util/createRule.ts b/packages/eslint-plugin/src/util/createRule.ts index f6e1362376e1..80611a8fdb89 100644 --- a/packages/eslint-plugin/src/util/createRule.ts +++ b/packages/eslint-plugin/src/util/createRule.ts @@ -1,43 +1,7 @@ import { ESLintUtils } from '@typescript-eslint/utils'; -import type { - RuleModuleWithMetaDocs, - RuleRecommendation, - RuleRecommendationAcrossConfigs, -} from '@typescript-eslint/utils/ts-eslint'; -/** - * This must be kept up-to-date with rules.d.ts. - */ -export interface ESLintPluginDocs { - /** - * Does the rule extend (or is it based off of) an ESLint code rule? - * Alternately accepts the name of the base rule, in case the rule has been renamed. - * This is only used for documentation purposes. - */ - extendsBaseRule?: boolean | string; - - /** - * If a string config name, which starting config this rule is enabled in. - * If an object, which settings it has enabled in each of those configs. - */ - recommended?: RuleRecommendation | RuleRecommendationAcrossConfigs; - - /** - * Does the rule require us to create a full TypeScript Program in order for it - * to type-check code. This is only used for documentation purposes. - */ - requiresTypeChecking?: boolean; -} +import type { ESLintPluginDocs } from '../../rules'; export const createRule = ESLintUtils.RuleCreator( name => `https://typescript-eslint.io/rules/${name}`, ); - -/** - * This must be kept up-to-date with rules.d.ts. - */ -export type ESLintPluginRuleModule = RuleModuleWithMetaDocs< - string, - readonly unknown[], - ESLintPluginDocs ->; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy