diff --git a/app/eslint.config.js b/app/eslint.config.js index cdedc4b4..0ec71077 100644 --- a/app/eslint.config.js +++ b/app/eslint.config.js @@ -68,7 +68,8 @@ export default tseslint.config( 'semi': ['error', 'never'], 'quotes': ['error', 'single', { avoidEscape: true }], 'comma-dangle': ['error', 'always-multiline'], - 'space-before-function-paren': ['error', 'always'], + // Disabled: conflicts with common TypeScript/React patterns + // 'space-before-function-paren': ['error', 'always'], 'keyword-spacing': ['error', { before: true, after: true }], 'space-infix-ops': 'error', 'eol-last': ['error', 'always'], @@ -80,8 +81,15 @@ export default tseslint.config( // Disable indent rule due to known issues with TypeScript/JSX // 'indent': ['error', 2], 'linebreak-style': ['error', 'unix'], + + // Additional standard rules that were missing + 'eqeqeq': ['error', 'always', { null: 'ignore' }], + 'new-cap': ['error', { newIsCap: true, capIsNew: false, properties: true }], + 'array-callback-return': ['error', { allowImplicit: false, checkForEach: false }], + // React rules 'react/react-in-jsx-scope': 'off', + 'react/no-unescaped-entities': 'error', 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'warn', 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], @@ -174,11 +182,16 @@ export default tseslint.config( // TypeScript configs (applied after main config) ...tseslint.configs.recommended, ...tseslint.configs.strict, + ...tseslint.configs.stylistic, // TypeScript type-checking configuration { files: ['**/*.{ts,tsx}'], - extends: [...tseslint.configs.recommendedTypeChecked], + extends: [ + ...tseslint.configs.recommendedTypeChecked, + ...tseslint.configs.strictTypeChecked, + ...tseslint.configs.stylisticTypeChecked, + ], languageOptions: { parserOptions: { project: ['./tsconfig.json'], @@ -190,6 +203,9 @@ export default tseslint.config( '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }], 'no-void': ['error', { allowAsStatement: true }], + // Disable empty function rule - legitimate use in React contexts and empty constructors + '@typescript-eslint/no-empty-function': 'off', + // Configure no-unused-expressions to allow logical AND and ternary patterns '@typescript-eslint/no-unused-expressions': ['error', { allowShortCircuit: true, diff --git a/app/src/api/layersApi.ts b/app/src/api/layersApi.ts index b91e5881..fa779ecf 100644 --- a/app/src/api/layersApi.ts +++ b/app/src/api/layersApi.ts @@ -21,6 +21,7 @@ export class layersApi { { itemType: ['*.*', { profileTemplate: ['*', 'item.*.*.*.*'] }] }, { markerIcon: ['*'] } as any, ], + // eslint-disable-next-line camelcase filter: { maps: { maps_id: { id: { _eq: this.mapId } } } }, limit: 500, sort: ['sort'], diff --git a/app/src/api/permissionsApi.ts b/app/src/api/permissionsApi.ts index c0f42647..ed1c027e 100644 --- a/app/src/api/permissionsApi.ts +++ b/app/src/api/permissionsApi.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-useless-constructor */ -/* eslint-disable @typescript-eslint/no-empty-function */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable no-console */ import { readPermissions } from '@directus/sdk' diff --git a/app/src/api/refiBcnApi.ts b/app/src/api/refiBcnApi.ts index 5f685ed8..57f914f9 100644 --- a/app/src/api/refiBcnApi.ts +++ b/app/src/api/refiBcnApi.ts @@ -1,5 +1,5 @@ /* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ +// /* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-explicit-any */ import axios from 'axios' diff --git a/app/src/api/userApi.ts b/app/src/api/userApi.ts index c63e1baa..c6c6c586 100644 --- a/app/src/api/userApi.ts +++ b/app/src/api/userApi.ts @@ -3,7 +3,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable no-console */ /* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { createUser, passwordRequest, passwordReset, readMe, updateMe } from '@directus/sdk' import { directusClient } from './directus' diff --git a/app/src/pages/MapContainer.tsx b/app/src/pages/MapContainer.tsx index 0d305d3d..f73dca08 100644 --- a/app/src/pages/MapContainer.tsx +++ b/app/src/pages/MapContainer.tsx @@ -2,7 +2,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable import/no-relative-parent-imports */ /* eslint-disable new-cap */ -/* eslint-disable @typescript-eslint/no-empty-function */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import { useEffect, useState } from 'react' diff --git a/app/src/pages/data.ts b/app/src/pages/data.ts index f72437dc..cd36c415 100644 --- a/app/src/pages/data.ts +++ b/app/src/pages/data.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ import type { Item, Tag } from 'utopia-ui' export const tags: Tag[] = [