diff --git a/packages/website/src/components/RulesTable/index.tsx b/packages/website/src/components/RulesTable/index.tsx index 5041eea6ccdf..82e945657e64 100644 --- a/packages/website/src/components/RulesTable/index.tsx +++ b/packages/website/src/components/RulesTable/index.tsx @@ -386,7 +386,9 @@ function parseFiltersState(str: string): FiltersState { const exclude = part.startsWith(NEGATION_SYMBOL); const key = exclude ? part.slice(1) : part; if (Object.hasOwn(neutralFiltersState, key)) { - res[key] = exclude ? 'exclude' : 'include'; + res[key as keyof typeof neutralFiltersState] = exclude + ? 'exclude' + : 'include'; } } diff --git a/packages/website/src/components/ast/utils.ts b/packages/website/src/components/ast/utils.ts index c5f2d7d821ec..ca2ec7adda36 100644 --- a/packages/website/src/components/ast/utils.ts +++ b/packages/website/src/components/ast/utils.ts @@ -5,14 +5,13 @@ import type { ParentNodeType } from './types'; import { tsEnumFlagToString, tsEnumToString } from './tsUtils'; -export function objType(obj: unknown): string { - const type = Object.prototype.toString.call(obj).slice(8, -1); - if (type === 'Object' && obj && typeof obj[Symbol.iterator] === 'function') { - return 'Iterable'; - } - - return type; -} +export const objType = (obj: unknown): string => + typeof obj === 'object' && + obj && + Symbol.iterator in obj && + typeof obj[Symbol.iterator] === 'function' + ? 'Iterable' + : Object.prototype.toString.call(obj).slice(8, -1); export function isRecord(value: unknown): value is Record { return objType(value) === 'Object'; diff --git a/packages/website/src/components/lib/jsonSchema.ts b/packages/website/src/components/lib/jsonSchema.ts index e61678858a4b..697c349ec19e 100644 --- a/packages/website/src/components/lib/jsonSchema.ts +++ b/packages/website/src/components/lib/jsonSchema.ts @@ -177,33 +177,31 @@ export function getTypescriptOptions(): DescribedOptionDeclaration[] { */ export function getTypescriptJsonSchema(): JSONSchema4 { const properties = Object.fromEntries( - getTypescriptOptions() - .map(item => { - let value; - if (item.type === 'boolean') { - value = { - description: item.description.message, - type: 'boolean', - }; - } else if (item.type === 'list' && item.element?.type instanceof Map) { - value = { - description: item.description.message, - items: { - enum: [...item.element.type.keys()], - type: 'string', - }, - type: 'array', - }; - } else if (item.type instanceof Map) { - value = { - description: item.description.message, - enum: [...item.type.keys()], + getTypescriptOptions().flatMap(item => { + let value: JSONSchema4 | undefined; + if (item.type === 'boolean') { + value = { + description: item.description.message, + type: 'boolean', + }; + } else if (item.type === 'list' && item.element?.type instanceof Map) { + value = { + description: item.description.message, + items: { + enum: [...item.element.type.keys()], type: 'string', - }; - } - return [item.name, value] as const; - }) - .filter(([, value]) => value), + }, + type: 'array', + }; + } else if (item.type instanceof Map) { + value = { + description: item.description.message, + enum: [...item.type.keys()], + type: 'string', + }; + } + return value ? [[item.name, value] as const] : []; + }), ); return { diff --git a/packages/website/src/components/lib/shallowEqual.ts b/packages/website/src/components/lib/shallowEqual.ts index 578317b68be6..876bc82cfb6f 100644 --- a/packages/website/src/components/lib/shallowEqual.ts +++ b/packages/website/src/components/lib/shallowEqual.ts @@ -1,9 +1,9 @@ /** * Shallowly compare two objects. */ -export function shallowEqual( - object1: object | null | undefined, - object2: object | null | undefined, +export function shallowEqual>( + object1: T | null | undefined, + object2: T | null | undefined, ): boolean { if (object1 === object2) { return true; diff --git a/packages/website/tsconfig.json b/packages/website/tsconfig.json index d2b9b0099fe2..8db82c33adf2 100644 --- a/packages/website/tsconfig.json +++ b/packages/website/tsconfig.json @@ -8,7 +8,6 @@ "jsx": "react", "lib": ["DOM", "ES2023"], "noEmit": true, - "noImplicitAny": false, "resolveJsonModule": true, "baseUrl": ".", "paths": {