import typescriptEslint from '@typescript-eslint/eslint-plugin'; import globals from 'globals'; import tsParser from '@typescript-eslint/parser'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import js from '@eslint/js'; import { FlatCompat } from '@eslint/eslintrc'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: js.configs.recommended, allConfig: js.configs.all, }); export default [ { ignores: ['**/lib'], }, ...compat.extends( 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking', 'plugin:prettier/recommended' ), { plugins: { '@typescript-eslint': typescriptEslint, }, languageOptions: { globals: { ...globals.browser, ...globals.node, Atomics: 'readonly', SharedArrayBuffer: 'readonly', }, parser: tsParser, ecmaVersion: 5, sourceType: 'commonjs', parserOptions: { project: ['tsconfig.json', 'tests/tsconfig.json'], }, }, rules: { 'no-mixed-spaces-and-tabs': ['off'], 'no-unused-vars': ['off'], }, }, { files: ['src/**/*.ts', 'tests/*.ts'], }, ];