import js from '@eslint/js'; import prettierPlugin from 'eslint-plugin-prettier'; import tseslint from '@typescript-eslint/eslint-plugin'; import tsparser from '@typescript-eslint/parser'; export default [ js.configs.recommended, { ignores: [ 'src/webapp/**', 'dist/**', 'node_modules/**', 'src/modules/atproto/infrastructure/lexicon/**', 'src/webapp/next-env.d.ts', ], }, { files: ['**/*.js'], languageOptions: { ecmaVersion: 2022, sourceType: 'script', globals: { console: 'readonly', process: 'readonly', Buffer: 'readonly', __dirname: 'readonly', __filename: 'readonly', module: 'readonly', require: 'readonly', exports: 'readonly', global: 'readonly', setTimeout: 'readonly', }, }, plugins: { prettier: prettierPlugin, }, rules: { 'prettier/prettier': 'error', 'no-unused-vars': 'warn', 'no-console': 'warn', }, }, { files: ['**/*.ts'], plugins: { '@typescript-eslint': tseslint, prettier: prettierPlugin, }, languageOptions: { parser: tsparser, ecmaVersion: 2022, sourceType: 'module', globals: { console: 'readonly', process: 'readonly', Buffer: 'readonly', __dirname: 'readonly', __filename: 'readonly', module: 'readonly', require: 'readonly', exports: 'readonly', global: 'readonly', fetch: 'readonly', // Jest globals describe: 'readonly', test: 'readonly', it: 'readonly', expect: 'readonly', beforeAll: 'readonly', beforeEach: 'readonly', afterAll: 'readonly', afterEach: 'readonly', jest: 'readonly', URLSearchParams: 'readonly', setTimeout: 'readonly', NodeJS: 'readonly', clearTimeout: 'readonly', setImmediate: 'readonly', setInterval: 'readonly', clearInterval: 'readonly', URL: 'readonly', }, }, rules: { 'prettier/prettier': 'error', 'no-unused-vars': 'off', // Turn off base rule '@typescript-eslint/no-unused-vars': 'warn', 'no-console': 'warn', }, }, { files: ['**/*.test.ts', '**/*.spec.ts'], languageOptions: { parser: tsparser, ecmaVersion: 2022, sourceType: 'module', globals: { console: 'readonly', process: 'readonly', Buffer: 'readonly', __dirname: 'readonly', __filename: 'readonly', module: 'readonly', require: 'readonly', exports: 'readonly', global: 'readonly', fetch: 'readonly', // Jest globals describe: 'readonly', test: 'readonly', it: 'readonly', expect: 'readonly', beforeAll: 'readonly', beforeEach: 'readonly', afterAll: 'readonly', afterEach: 'readonly', jest: 'readonly', // Browser globals for e2e tests using Playwright document: 'readonly', window: 'readonly', navigator: 'readonly', location: 'readonly', setTimeout: 'readonly', NodeJS: 'readonly', clearTimeout: 'readonly', }, }, plugins: { '@typescript-eslint': tseslint, prettier: prettierPlugin, }, rules: { 'prettier/prettier': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'warn', 'no-console': 'warn', }, }, ];