From d5a1f1213c685f2cfd9b6f4b66d0a9a2e33d20fa Mon Sep 17 00:00:00 2001 From: Eric Morand <156682586+ericmorand-sonarsource@users.noreply.github.com> Date: Thu, 2 May 2024 17:30:29 +0200 Subject: [PATCH] Make the exported rules a typed record (#469) --- src/index.ts | 4 ++-- tests/index.test.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 5db594ec..4ce1bac5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -52,7 +52,7 @@ import * as preferObjectLiteral from './rules/prefer-object-literal'; import * as preferSingleBooleanReturn from './rules/prefer-single-boolean-return'; import * as preferWhile from './rules/prefer-while'; -export const rules: Record>> = { +export const rules = { 'cognitive-complexity': cognitiveComplexity, 'elseif-without-else': elseifWithoutElse, 'max-switch-cases': maxSwitchCases, @@ -98,7 +98,7 @@ const recommendedConfig: FlatConfig.Config = { }; for (const key in rules) { - const rule = rules[key]; + const rule = rules[key as keyof typeof rules]; const recommended = rule.meta.docs?.recommended; recommendedConfig.rules![`sonarjs/${key}`] = recommended === undefined ? 'off' : 'error'; diff --git a/tests/index.test.ts b/tests/index.test.ts index c9a69b68..96eadfd4 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -48,7 +48,7 @@ it('should document all rules', () => { existingRules.forEach(rule => { expect(README.includes(rule)).toBe(true); expect(fs.existsSync(`${root}/docs/rules/${rule}.md`)).toBe(true); - expect(rules[rule].meta.docs!.url).toBe( + expect(rules[rule as keyof typeof rules].meta.docs!.url).toBe( `https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/${rule}.md`, ); });