import { baseConfigs, globals, getESMDirname } from '../../eslint.config.mjs' import tseslint from 'typescript-eslint' /** * Base configs that should be inherited in all packages as well * @type {Array} */ const configs = [ ...baseConfigs, { files: ['**/*.js'], languageOptions: { sourceType: 'module' } }, { languageOptions: { globals: { ...globals.node } } }, ...tseslint.configs.recommendedTypeChecked.map((c) => ({ ...c, files: [...(c.files || []), '**/*.ts', '**/*.d.ts'] })), { files: ['**/*.ts', '**/*.d.ts'], languageOptions: { parserOptions: { tsconfigRootDir: getESMDirname(import.meta.url), project: './tsconfig.json' } }, rules: { '@typescript-eslint/no-explicit-any': ['error'], '@typescript-eslint/no-unsafe-argument': ['error'], '@typescript-eslint/no-unsafe-assignment': 'error', '@typescript-eslint/no-unsafe-call': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', '@typescript-eslint/no-for-in-array': ['error'], '@typescript-eslint/restrict-template-expressions': ['error'], '@typescript-eslint/restrict-plus-operands': ['error'], '@typescript-eslint/await-thenable': ['warn'], '@typescript-eslint/ban-types': ['warn'], 'require-await': 'off', '@typescript-eslint/require-await': 'error', 'no-undef': 'off' } }, { files: ['**/*.d.ts'], rules: { 'no-var': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/ban-types': 'off', 'no-unused-vars': 'off' } } ] export default configs