// @ts-check import { builtinModules } from 'node:module'; import tseslint from 'typescript-eslint'; import importX from 'eslint-plugin-import-x'; // @ts-expect-error missing types import eslint from '@eslint/js'; // @ts-expect-error missing types import eslintConfigPrettier from 'eslint-config-prettier'; export default tseslint.config( eslint.configs.recommended, { files: ['**/*.js', '**/*.ts', '**/*.tsx'], extends: [...tseslint.configs.recommended], plugins: { import: importX, }, languageOptions: { parserOptions: { sourceType: 'module', ecmaFeatures: { jsx: true, }, }, }, rules: { eqeqeq: ['warn', 'always', { null: 'never' }], 'no-debugger': ['error'], 'no-empty': ['warn', { allowEmptyCatch: true }], 'prefer-const': [ 'warn', { destructuring: 'all', }, ], '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/consistent-type-imports': [ 'error', { prefer: 'type-imports', fixStyle: 'inline-type-imports' }, ], 'import/no-nodejs-modules': [ 'error', { allow: builtinModules.map((mod) => `node:${mod}`) }, ], 'import/no-duplicates': 'error', 'import/order': 'error', 'sort-imports': [ 'error', { ignoreCase: false, ignoreDeclarationSort: true, ignoreMemberSort: false, memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], allowSeparatedGroups: false, }, ], }, }, eslintConfigPrettier, { ignores: ['**/dist/', '**/coverage/'], } );