import js from '@eslint/js'; import tseslint from '@typescript-eslint/eslint-plugin'; import tsparser from '@typescript-eslint/parser'; import prettier from 'eslint-config-prettier'; export default [ { ignores: ['dist/**', 'node_modules/**', 'coverage/**', 'web/**'], }, js.configs.recommended, { files: ['**/*.ts'], languageOptions: { parser: tsparser, parserOptions: { ecmaVersion: 2023, sourceType: 'module', }, globals: { process: 'readonly', console: 'readonly', NodeJS: 'readonly', Buffer: 'readonly', setTimeout: 'readonly', setInterval: 'readonly', clearTimeout: 'readonly', clearInterval: 'readonly', performance: 'readonly', AbortController: 'readonly', }, }, plugins: { '@typescript-eslint': tseslint, }, rules: { ...tseslint.configs.recommended.rules, '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, ], '@typescript-eslint/consistent-type-imports': 'warn', 'no-console': 'off', }, }, { files: ['web/src/**/*.ts', 'web/src/**/*.tsx'], languageOptions: { globals: { fetch: 'readonly', sessionStorage: 'readonly', RequestInit: 'readonly', document: 'readonly', window: 'readonly', }, }, }, { files: ['test/**/*.ts'], rules: { '@typescript-eslint/no-explicit-any': 'off', 'no-async-promise-executor': 'off', }, }, prettier, ];